从ValuesController中的IdentityUser访问自定义属性,无需扩展-Web API

时间:2019-02-06 00:29:48

标签: asp.net asp.net-web-api asp.net-identity

我从下面的回答中继续关注:How to extend IdentityUser with custom property

我添加的变量(遵循上述答案)是:

int numberID
string fullName

这是基于默认的Visual Studio 2017 ASP.net Web应用程序构建的,该应用程序选择了Web API和“个人用户帐户身份验证”选项。

我现在正在尝试在项目的ValuesController中读取当前用户的numberID和fullName的当前值。

我尝试做

var currentUser = System.Web.HttpContext.Current.User.Identity.GetUserId();
var currentnumberID = currentUser.numberID;

但是最后一行代码没有成功。

我还使用了User.Identity.GetUserName(),想知道是否有一种方法可以在不创建用户身份扩展名的情况下访问我的新变量?

OR

更好的是,使用我的Web API应用程序,为用户添加其他变量/字段的最佳方法是什么。即,我想添加与每个用户相关联的fullName和numberID,并能够在我的Web API控制器中访问它们(例如,调用当前用户并列出与当前用户相关联的变量)。我开始认为我尝试使用UserIdentity走错了路。

编辑 最终忍住了子弹,在这里遵循了非常简单的方法:How to Get Custom Property Value of the ApplicationUser in the ASP.Net MVC 5 View? 添加用户身份扩展名。以前的答案似乎很复杂,但是那个答案很简单而且有效!

1 个答案:

答案 0 :(得分:1)

问题是您正在读取$postOrdered = array_unique($postOrdered); arsort($postOrdered); 并将其视为UserId对象。

您需要使用User来获取用户UserManager对象。在控制器的操作方法内部,您可以访问User,因此可以简单地使用它:

UserManager

如果您不在控制器的操作方法内,则需要从var currentUser = UserManager.FindById(User.Identity.GetUserId()); 获取UserManager

HttpContext