Web API - 如何使用authen请求设置cookie [英] Web API - How to set cookie with authen request
本文介绍了Web API - 如何使用authen请求设置cookie的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我已经用asp.net web api构建了一个小例子。我创建一个api进行身份验证。我尝试使用set-cookie响应头,当用户成功登录。但在下一个请求,我不能在标题中找到cookie。有谁能够帮助我?非常感谢!
I have built small example with asp.net web api. I create a api for authentication. I try to use set-cookie response header when user logged in successful. But in next request, i can't find cookie in header. Can anybody help me? Thanks a lot!!!
if (repository.CheckValidUser(user))
{
var resp = new HttpResponseMessage();
var cookie = new CookieHeaderValue("Authorization-Token", RSAClass.Encrypt(user.Username));
cookie.Expires = DateTimeOffset.Now.AddDays(1);
cookie.Domain = Request.RequestUri.Host;
cookie.Path = "/";
resp.Headers.AddCookies(new CookieHeaderValue[] { cookie });
return resp;
}
else
{
throw new HttpResponseException(new HttpResponseMessage() { StatusCode = HttpStatusCode.Unauthorized, Content = new StringContent("Invalid user name or password.") });
}
我有一些关于我的请求的照片
I have some photos about my request
< img src =https://i.stack.imgur.com/rEx4f.jpgalt =下一个请求>
推荐答案
您应该创建一个DelegatingHanlder以保存Cookie,例如:
You should create a DelegatingHanlder to persist cookies, for exemple:
public class MyCookieHandle : DelegatingHandler
{
async protected override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request, CancellationToken cancellationToken)
{
//
// Other code for retrieve user information
//
var cookie = request.Headers.GetCookies("Authorization-Token").FirstOrDefault();
if (cookie == null)
{
cookie = new CookieHeaderValue("Authorization-Token", RSAClass.Encrypt(user.Username));
cookie.Expires = DateTimeOffset.Now.AddDays(1);
cookie.Domain = request.RequestUri.Host;
cookie.Path = "/";
}
HttpResponseMessage resp = await base.SendAsync(request, cancellationToken);
resp.Headers.AddCookies(new CookieHeaderValue[] { cookie });
return resp;
}
}
这里有更多信息: ASP.NET Web API中的HTTP Cookie
这篇关于Web API - 如何使用authen请求设置cookie的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文