一尘不染

如何在ASP.NET Core中获取当前用户

c#

我想要一个当前用户来获取用户信息,例如电子邮件。但是我不能在asp.net核心中做到这一点。我很困惑这是我的代码。

HttpContext在控制器的 构造函数 中几乎为null
。在每个操作中都吸引用户是不好的。我想一次获取用户信息并设置为ViewData;

public DashboardController()
{
    var user = HttpContext.User.GetUserId();
}

阅读 605

收藏
2020-05-19

共1个答案

一尘不染

User.FindFirst(ClaimTypes.NameIdentifier).Value

编辑构造函数

下面的代码有效:

public Controller(IHttpContextAccessor httpContextAccessor)
{
    var userId = httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value 
}

编辑RTM

您应该注册IHttpContextAccessor

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddHttpContextAccessor();
    }
2020-05-19