2017-09-05 84 views
0

我有以下的控制器功能:如何將授權添加到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(「授權」)就要回來了空。

回答

1

您應該從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()); 
} 
+0

這沒有工作,仍然是response.headers空.. – tweetypi

+0

我編輯我的問題把你的答案進去做,我不得不做的事情略有不同(新HttpResponseMessage而不是Request.CreateResponse,它不存在,可能是因爲我使用的是asp.net核心...) – tweetypi

+0

@tweetypi好吧,是的,如果你使用.net核心,我的答案需要更新。但是,這個概念是一樣的。如果仍然沒有在響應中獲取標題,請檢查響應管道中的某些中間件是否在調用控制器方法後清除標題。檢查啓動 –

相關問題