ASP核心:如何设置httpContext.User?

时间:2016-10-07 15:33:03

标签: asp.net identity httpcontext

我用令牌编写中间件进行身份验证。 (不要问我:“为什么?”)

...
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?

1 个答案:

答案 0 :(得分:4)

你必须像这样创建IPrincipal对象

var user = new GenericPrincipal(new ClaimsIdentity(userData.Username), userData.Roles);
httpContext.User = user;