Get the AspNetUser from HttpContext.Current.User

本文关键字:Current User HttpContext from the AspNetUser Get | 更新日期: 2023-09-27 17:49:18

使用MVC 5.

我是新来的Users, IdentitiesClaims

如何从HttpContext.Current.User中得到AspNetUser ?我知道我可以使用HttpContext.Current.User.Identity.Name(这是我系统上用户的电子邮件地址),然后点击该用户的AspNetUser表,但是是否有更好的方法从我缺失的HttpContext.Current.User中获得AspNetUser ?例如,它是否已经包含在HttpContext.Current.User的某个地方?

我试过谷歌,但我没有找到任何关于这个特定问题的答案。

Get the AspNetUser from HttpContext.Current.User

AspNetUser不存储在HttpContext.Current.User属性中。IPrincipal对象由HttpContext.Current返回。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语句:

using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.Owin;

请注意,如果可能的话,最好通过UserManager API,一旦有了User对象,就可以通过UserManager更新方法编辑并保存更改。许多更改可以直接通过UserManager方法进行。如果你有一个UserManager的实例,你也可以访问User对象:

ApplicationUser user = await UserManager.FindByIdAsync(User.Identity.GetUserId());

如何获得当前用户的副本,以及如何在MVC5中使用用户类?

你会发现还有其他一些选项,但它们都与你下面的步骤相似:

  1. 使用Current.User获取一些信息
  2. 使用一条信息从DB获取AspNetUser