如何在RestSharp和ASP.NET会话中使用cookie容器

本文关键字:cookie 容器 会话 NET RestSharp ASP | 更新日期: 2023-09-27 18:20:06

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

然而,我不知道如何将请求保存在会话中,因为我使用RestSharp作为分离的客户端。我需要在成功授权后以某种方式从服务器取回密钥,然后对于未来的每次呼叫,将密钥与会话中存储的密钥进行核对。

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

我一直在用HttpFactory查看cookie容器,但似乎没有任何关于这方面的文档。

如何在RestSharp和ASP.NET会话中使用cookie容器

如果有人遇到类似的问题,请注意,对于简单的"每次请求后存储我的cookie"问题,并不完全需要上述内容。Jaffas上述方法有效,但您只需在RestClient上附加一个cookies Store,即可自动存储cookies。我知道这不是一个适合所有人的解决方案,因为您可能只想存储专用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));
 }