我想要一个当前用户来获取用户信息,例如电子邮件。但是我不能在asp.net核心中做到这一点。我很困惑这是我的代码。
HttpContext在控制器的 构造函数 中几乎为null 。在每个操作中都吸引用户是不好的。我想一次获取用户信息并设置为ViewData;
HttpContext
ViewData
public DashboardController() { var user = HttpContext.User.GetUserId(); }
User.FindFirst(ClaimTypes.NameIdentifier).Value
编辑构造函数
下面的代码有效:
public Controller(IHttpContextAccessor httpContextAccessor) { var userId = httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value }
编辑RTM
您应该注册IHttpContextAccessor:
IHttpContextAccessor
public void ConfigureServices(IServiceCollection services) { services.AddHttpContextAccessor(); }