asp.net - ASP核心: How to set httpContext.用户?

标签 asp.net identity httpcontext

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

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

关于asp.net - ASP核心: How to set httpContext.用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39920954/

相关文章:

sql-server - 违反身份列上的主键错误

asp.net-mvc - 有关 HttpContext、HttpContextBase 和操作过滤器的问题

c# - Angular.js - CORS - ASP.NET - Rest API - 在 Access-Control-Allow-Origin header 中找不到来源

c# - 以编程方式在 web.config 中注册的代码隐藏中加载用户控件

java - 抽屉无法识别布局

c# - 在自定义 NLog 目标中检索 HttpContext

asp.net - Request.Form 抛出异常

asp.net - ASP.NET Core SignalR 是否向后兼容 ASP.NET SignalR

c# - 在 .NET 中处理空日期的标准方法是什么

sql-server - 如何在sql server 2008中使用插入后触发器