zoukankan      html  css  js  c++  java
  • webService启用cookie的另一种方法

    很多时候,我们希望用到asp.net的membership,这样就可以快速的处理角色验证之类的问题。而且客服端能够与bs系统共用一套账户。

    webservice里面的proxy类继承自WebClientProtocol,而在WebClientProtocol里面包含两个方法

    protected virtual WebRequest GetWebRequest(Uri uri);

    protected virtual WebResponse GetWebResponse(WebRequest request);

    我们应该很清楚,调用webservice本质上也是一个http的Post请求,和普通的html不一样的是,webservice请求的内容和服务返回的内容不是html,而是xml(soap协议)。再看这两个方法,所以proxy在调用service的时候,肯定会调用到这两个方法。所以,我们只要进行适当的重写这两个方法就OK了。

    private static string currentCookie = string.Empty;
            protected override WebRequest GetWebRequest(Uri uri)
            {
                WebRequest request = base.GetWebRequest(uri);
                if (!string.IsNullOrEmpty(currentCookie))
                {
                    request.Headers[HttpRequestHeader.Cookie] = currentCookie;
                }
                return request;
            }
            protected override WebResponse GetWebResponse(WebRequest request)
            {
                WebResponse response = base.GetWebResponse(request);
                if (!string.IsNullOrEmpty(response.Headers[HttpResponseHeader.SetCookie]))
                    currentCookie = response.Headers[HttpResponseHeader.SetCookie];
                return response;
            }
    

    我们直接从http请求的header里面去截取cookie,在放送之前,在Request的header上附加上cookie。

    服务端,web.config需要配置一下,

    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true" />
      </system.webServer>

    启用所有module通道,这样就会进行权限验证。

  • 相关阅读:
    作业2 身份认证(正心13)
    ubuntu16内核升级过程遇到的问题
    「」
    「loj
    「一个经典问题的另一个推导方法」
    「loj
    「XXI Opencup GP of Tokyo」 Count Min Ratio
    「codeforces
    「codeforces
    「Dominator Tree」
  • 原文地址:https://www.cnblogs.com/Linjianyu/p/2548945.html
Copyright © 2011-2022 走看看