2017-09-05 4 views
0

私は、次のコントローラ機能があります。response.headers.get(「認可」)バックヌル来ているいくつかの理由Response.Headerに認証を追加する方法は?

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); 

:私はこれを持ってリアクトで減速で

[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()); 
    } 

を。

答えて

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

で行うことができます、私は少し異なる(新しい物事をしなければなりませんでした私はasp.netコアを使用しているため、存在しないRequest.CreateResponseの代わりにHttpResponseMessageを使用しています。) – tweetypi

+0

@tweetypi ok、yes .netコアを使用している場合は、私の回答を更新する必要があります。しかし、その概念は同じです。レスポンスにヘッダーがまだ残っていない場合は、コントローラーメソッドが呼び出された後、応答パイプラインのミドルウェアによってヘッダーがクリアされているかどうかを確認します。起動時にチェックインする –

関連する問題