首页 > 解决方案 > 如何访问经过身份验证和授权的用户详细信息?

问题描述

例如:

我有一个简单的应用程序!

并且默认实现了简单的用户注册页面和登录页面(当我们选择mvc tempate时)。

所以我为用户注册模型添加了新属性。像这样的东西。

public class ApplicationUser : IdentityUser
{
    [Required]
    [StringLength(255)]
    public string FirstName { get; set; }

    [Required]
    [StringLength(50)]
    public string LastName { get; set; }

    [Required]
    [StringLength(10)]
    public string Gender { get; set; }

    [Required]
    [StringLength(50)]
    public UserType UserType { get; set; }

    [Required]
    [StringLength(255)]
    public Department Depatment{ get; set; }

    [Required]
    [StringLength(50)]
    public Session Session { get; set; }
}

并且这些属性也被添加到 RegisterViewModel 用于渲染注册页面等等。

问题:

新用户注册时!并登录应用程序。所以现在我想访问登录的用户详细信息?即名字、姓氏、性别等。

我试过User.Identity.?但没有这样的属性?之前我添加到 ApplicationUser ?

我想访问所有 LoggedIn 用户属性并将其呈现在视图中。

[Authorize]
public ActionResult Index()
{
    // Retreiving LoggedIn User Details.
    // ....
    // ....
    // LoggedInUserInfo = // assigning all the User details to the LoggedUserInfo

    return View(LoggedInUserInfo); // LoggedInUserInfo is a separete class that having several properties such as firstName, lastName, Gener, etc...
}

标签: c#asp.net-mvcasp.net-identity

解决方案


您可以注入 UserManager 类,然后使用它来获取应用程序用户信息。

private UserManager<ApplicationUser> _userManager;
public YourController(UserManager<ApplicationUser> userManager)
{
_userManager = userManager;
}

他们在你的方法中:

var user = await _userManager.GetUserAsync(User);
var firstName = user.FirstName;
var lastName = user.LastName;
var middleName = user.MiddleName;
var documentNumber = user.DocumentNumber;

希望这可以帮助。


推荐阅读