加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 19:52:16 所属栏目:asp.Net 来源:网络整理
导读:我用令牌编写用于身份验证的中间件. (不要问我:“为什么?”). ...private UserManagerApplicationUser userManager;private RequestDelegate next;private WareHouseDbContext context; ...public async Task Invoke(HttpContext httpContext){ var header
我用令牌编写用于身份验证的中间件. (不要问我:“为什么?”).
...
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?

解决方法

你必须像这样创建IPrincipal对象
var user = new GenericPrincipal(new ClaimsIdentity(userData.Username),userData.Roles);
httpContext.User = user;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读