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

Posted

技术标签:

【中文标题】从 asp.net 核心标识中获取 applicationuser 的属性【英文标题】:Get property of applicationuser from the asp.net core identity 【发布时间】:2016-08-26 20:20:20 【问题描述】:

我找到了这个链接:

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】:

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

【讨论】:

f..k...我尝试了GetUserIdAsync,之前它只接受一个ApplicationUser,但我不知道如何获取/转换它...为什么没有重载GetUserIdAsync(base.User ) 方法 ?愚蠢的......谢谢Mike_G!起初我试图获取用户的 ID,然后我想如何实际获取自定义属性然后在这里做了问题:-) @Mike_G...不错的扩展方法。我是网络开发的新手。管道中获取用户对象的最佳位置是什么/在哪里,因此它始终可用并且只需要检索一次。每次需要时都必须请求用户对象似乎是重复的。

以上是关于从 asp.net 核心标识中获取 applicationuser 的属性的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET 核心标识。使用 ApplicationDbContext 和 UserManager。他们是不是共享上下文?

JWT:如何从声明中的特定键获取值列表。 C# Asp.Net 核心

asp.net 核心 1.0 mvc。从 Request.Body 获取原始内容

从字符串转换为唯一标识符时 ASP.NET 转换失败

在视图中获取 ASP.NET 标识当前用户

谷歌驱动器重定向 URI 不匹配以及如何从 ASP.net 核心 2.0 中的谷歌驱动器获取文件列表