我找到了这个链接:
How to get the current logged in user Id ASP.NET Core
但答案都已过时了!
这篇SO帖子既不是解决方案,也只是一个样板解决方案:How should I access my ApplicationUser properties from within my MVC 6 Views?
在mvc操作中:base.User不是ApplicationUser类型,也不是base.User.Identity。两者都无法转换为ApplicationUser。
那么如何在登录时访问放在applicationuser对象中的自定义属性?
答案 0 :(得分:3)
对于控制器,依赖UserManager<ApplicationUser>
。然后,您可以通过请求的HttpContext访问ApplicationUser。我为我的项目写了一个扩展方法:
public static class IdentityExt
{
public static Task<T> GetCurrentUser<T>(this UserManager<T> manager, HttpContext httpContext) where T: class{
return manager.GetUserAsync(httpContext.User);
}
}
返回当前用户,并允许您访问其所有属性。
这里面是一个动作:
public Task<IActionResult> Index(){
var user = await _userManager.GetCurrentUser(HttpContext);
}