繁体   English   中英

如何将Cookie容器与RestSharp和ASP.NET会话一起使用?

[英]How do I use the cookie container with RestSharp and ASP.NET sessions?

我希望能够在控制器上调用身份验证操作,如果操作成功,则将经过身份验证的用户详细信息存储在会话中。

但是,由于将RestSharp用作独立客户端,因此我不确定如何将请求保留在会话中。 我需要以某种方式从成功的授权服务器中获取密钥,然后对于以后的每个调用,将密钥与会话中存储的密钥进行检查。

如何确保RestSharp中的RestClient发送所有将来的请求,并正确设置cookie,以便在服务调用内部可以正确检索会话变量?

我一直在用HttpFactory查看cookie容器,但似乎在任何地方都没有任何文档。

如果有人遇到类似的问题,请注意,对于简单的“在每次请求后存储我的cookie”问题,并不需要上述条件。 上面的Jaffas方法可行,但是您可以简单地将CookieStore附加到RestClient并自动存储cookie。 我知道这不是每个人都可以解决的方法,因为您可能只想存储专用的 cookie。 另一方面,它使您测试REST客户端的工作变得更加轻松! (为方便起见,我使用了Jaffas变量):

        CookieContainer _cookieJar = new CookieContainer();
        var client = new RestClient("http://<test-server>/letteron"); //test URL
        client.CookieContainer = _cookieJar;

我最终解决了这个问题。 基本上创建一个cookie容器,然后将响应中的会话cookie添加到cookie容器中。 然后,所有将来的请求都将包含此cookie。

 var sessionCookie = response.Cookies.SingleOrDefault(x => x.Name == "ASP.NET_SessionId");
 if (sessionCookie != null)
 {
    _cookieJar.Add(new Cookie(sessionCookie.Name, sessionCookie.Value, sessionCookie.Path, sessionCookie.Domain));
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM