从ASP.NET Core Identity获取ApplicationUser属性

3
1个回答

4

对于控制器,需要依赖 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);
}

我之前尝试过使用GetUserIdAsync,它只接受一个ApplicationUser,但我无法找到如何获取/转换它的方法...为什么没有重载的GetUserIdAsync(base.User)方法?太愚蠢了...感谢Mike_G!!!起初我尝试获取用户的Id,然后我想到实际上获取自定义属性怎么样,然后在这里提出了问题 :-) - Pascal
@Mike_G...不错的扩展方法。我是新手网站开发者。在管道中获取用户对象的最佳位置/方式是什么/在哪里,以便它始终可用且只需要检索一次。每次需要时都要请求用户对象似乎很重复。 - dinotom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接