Get the AspNetUser from HttpContext.Current.User
本文关键字:Current User HttpContext from the AspNetUser Get | 更新日期: 2023-09-27 17:49:18
使用MVC 5.
我是新来的Users
, Identities
和Claims
。
如何从HttpContext.Current.User
中得到AspNetUser
?我知道我可以使用HttpContext.Current.User.Identity.Name
(这是我系统上用户的电子邮件地址),然后点击该用户的AspNetUser
表,但是是否有更好的方法从我缺失的HttpContext.Current.User
中获得AspNetUser
?例如,它是否已经包含在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中使用用户类?
你会发现还有其他一些选项,但它们都与你下面的步骤相似:
- 使用
Current.User
获取一些信息 - 使用一条信息从DB获取
AspNetUser