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

  • 相关阅读:
    获取windows所有用户名
    windbg内存查看(d*)
    Windbg查看调用堆栈(k*)
    Windbg调试互斥体(Mutex)死锁
    Windbg调试关键区(CriticalSection)死锁
    "R6002 floating point support not loaded"错误
    由可变参数引起的崩溃
    【Dubbo源码学习】负载均衡算法(2)-轮询算法的实现
    jdk1.8源码解析(1):HashMap源码解析
    Java annotation浅析
  • 原文地址:https://www.cnblogs.com/Linjianyu/p/2548945.html
Copyright © 2020-2023  润新知