我有一个Web API 2项目,使用基于cookie的会话供我们内部使用。我已创建/api/login
和/api/logout
个操作,并且可以使用浏览器访问它。
我现在正尝试使用HttpClient
创建一个C#客户端来与API通信。我可以使用以下方式登录:
Uri loginUri = new Uri("http://localhost/api", "login");
HttpResponseMessage response = _http.PostAsJsonAsync(loginUri, loginModel).Result;
我可以通过
从cookie中获取会话ID字符串var cookies = _httpHandler.CookieContainer.GetCookies(uri);
if (cookies["session_id"] != null)
sessionID = cookies["session_id"].Value;
我的问题是:对于包括退出请求在内的每个后续请求,如何在请求标头中包含session_id
Cookie?如果可能的话,我想在会话期间重用HttpClient
对象。我看到了this question and answer,但它是用于调用登录,执行操作以及在同一请求中注销。
谢谢!
答案 0 :(得分:0)
我最终回过头来使用了我在MVC项目中使用的相同的 FormsAuthentication 方法。因此,在调用我的自定义 MembershipProvider 后,我使用 FormsAuthentication 方法来设置和跟踪我的会话Cookie。我打电话给FormsAuthentication.SetAuthCookie()
登录,FormsAuthentication.SignOut()
登出。