[英]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.