我发现了这个链接:如何在ASP.NET Core中获取当前已登录用户ID,但是这些答案都已过时!此外,该SO帖子也不能作为解决方案,它只是一个样板式的解决方法:如何从MVC 6视图中访问我的ApplicationUser属性?在mvc操作中,base.User既不是ApplicationUser类型,也不能将其转换为ApplicationUser。那么,在登录时如何访问放置在applicationuser对象中的自定义属性呢?
对于控制器,需要依赖 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);
}