【问题标题】:ASP Core: How to set httpContext.User?ASP Core:如何设置 httpContext.User?
【发布时间】:2024-09-04 01:45:02
【问题描述】:

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

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

【问题讨论】:

  • 找到的名字是正确的。
  • 请。帮帮我

标签: asp.net identity httpcontext


【解决方案1】:

你必须像这样创建IPrincipal对象

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

【讨论】:

    相关资源