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通道,这样就会进行权限验证。

  • 相关阅读:
    Unique Binary Search Trees 解答
    Unique Paths II 解答
    Unique Paths 解答
    Maximum Subarray 解答
    Climbing Stairs 解答
    House Robber II 解答
    House Robber 解答
    Valid Palindrome 解答
    Container With Most Water 解答
    Remove Duplicates from Sorted List II 解答
  • 原文地址:https://www.cnblogs.com/Linjianyu/p/2548945.html
Copyright © 2011-2022 走看看