使用MVC 5.
我是Users
,Identities
和Claims
的新手。
如何从AspNetUser
获取HttpContext.Current.User
?我知道我可以使用HttpContext.Current.User.Identity.Name
(这是我系统上用户的电子邮件地址),然后点击该用户的AspNetUser
表,但有更好的方法来获取{{1}来自AspNetUser
我失踪了吗?例如它是否已包含在HttpContext.Current.User
的某个位置?
我已经尝试过Google,但我并没有真正找到这个具体问题的答案。
答案 0 :(得分:2)
AspNetUser未存储在HttpContext.Current.User属性中。 HttpContext.Current.User返回一个IPrincipal对象,在IPrincipal上指定的唯一成员是IIdentity Identity和bool IsInRole。然后,IIdentity接口为您提供Name属性,您可以使用它来查找实际的用户对象。
如果您只想要一行代码并拥有对User对象的完全访问权限,则可以使用以下代码访问AspNetUser:
ApplicationUser user = System.Web.HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>().FindById(System.Web.HttpContext.Current.User.Identity.GetUserId());
您需要以下使用声明:
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.Owin;
请注意,如果您能够通过UserManager API,可能会更好,一旦拥有了User对象,就可以通过UserManager更新方法编辑然后保存更改。可以通过UserManager方法直接进行许多更改。如果您有一个UserManager实例,您还可以通过以下方式访问User对象:
ApplicationUser user = await UserManager.FindByIdAsync(User.Identity.GetUserId());
答案 1 :(得分:0)
重复How to get current user, and how to use User class in MVC5?
您会发现还有其他一些选项,但所有选项都与您所遵循的步骤类似:
Current.User
获取部分信息AspNetUser
醇>