从asp.net核心标识获取applicationuser的属性

时间:2016-08-26 20:20:21

标签: asp.net-core asp.net-core-mvc

我找到了这个链接:

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对象中的自定义属性?

1 个答案:

答案 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);
}