2016-10-07 20 views
1

トークンによる認証のためのミドルウェアを書いています。 (私に聞かないでください:なぜですか?)ASPコア:httpContext.Userを設定するには?

... 
private UserManager<ApplicationUser> userManager; 
private RequestDelegate next; 
private WareHouseDbContext context; 
... 
public async Task Invoke(HttpContext httpContext) 
{ 
    var header = httpContext.Request.Headers.Where(x => x.Key == "Authorization"); 
    if (header.Count() == 1) 
    { 
     var token = header.First().Value.First(); 
     if (token.Contains("Bearer")) 
     { 
      var name = TokenEncryptor.Decrypt(token.Replace("Bearer ", "")); 
      var user = context.Users.FirstOrDefault(x => x.UserName == name); 

      if (user != null) 
      { 
       httpContext.User = user; // ???? how do this ???/ 
      } 
     } 
    }   
    await next.Invoke(httpContext); 
} 

httpContext.Userを設定するにはどうすればいいですか?

+0

名が正しいかのように、あなたはIPrincipalオブジェクトを作成する必要があります。 –

+0

してください。助けて –

答えて

0

たこの

var user = new GenericPrincipal(new ClaimsIdentity(userData.Username), userData.Roles); 
httpContext.User = user; 
関連する問題