如何将授权添加到Response.Header?
问题描述:
我有以下的控制器功能:如何将授权添加到Response.Header?
[HttpGet("[action]")]
public async Task<HttpResponseMessage> Login(string username, string password)
{
var user = await _userManager.FindByNameAsync(username);
var res = await _signInManager.CheckPasswordSignInAsync(user, password, false);
if (res.Succeeded)
{
var msg = new HttpResponseMessage(HttpStatusCode.OK);
msg.Headers.Add("Authorization", JwtManager.GenerateToken(username));
return msg;
}
else
return new HttpResponseMessage(HttpStatusCode.BadRequest);// Request.CreateResponse(HttpStatusCode.BadRequest, new object());
}
在减速阵营我有这样的:
let fetchTask = fetch('http://localhost:25565/api/mediaengine/login?username=' + userName + '&password=' + password)
.then(response => {
var k = response.headers.get("Authorization");
var l = 0;
})
.catch(e => {
});
addTask(fetchTask);
出于某种原因response.headers.get(“授权”)就要回来了空。
答
您应该从api返回响应。这可以通过HttpResponseMessage类
[HttpGet("[action]")]
public async Task<HttpResponseMessage> Login(string username, string password)
{
var user = await _userManager.FindByNameAsync(username);
var res = await _signInManager.CheckPasswordSignInAsync(user, password, false);
if(res.Succeeded)
{
var response = Request.CreateResponse(HttpStatusCode.OK, new object());
response.Headers.Add("Authorization", JwtManager.GenerateToken(username));
return response;
}else
return Request.CreateResponse(HttpStatusCode.BadRequest, new object());
}
这没有工作,仍然是response.headers空.. – tweetypi
我编辑我的问题把你的答案进去做,我不得不做的事情略有不同(新HttpResponseMessage而不是Request.CreateResponse,它不存在,可能是因为我使用的是asp.net核心...) – tweetypi
@tweetypi好吧,是的,如果你使用.net核心,我的答案需要更新。但是,这个概念是一样的。如果仍然没有在响应中获取标题,请检查响应管道中的某些中间件是否在调用控制器方法后清除标题。检查启动 –