如何访问经过身份验证和授权的用户详细信息?

时间:2018-12-14 14:54:39

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

例如:

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

默认情况下,默认情况下会实现简单的用户注册页面和登录页面(当我们选择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...
}

2 个答案:

答案 0 :(得分:1)

您可以注入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;

希望这会有所帮助。

答案 1 :(得分:0)

结合您的ApplicationDbContext和扩展方法GetUserId(),您可以找到已登录的ApplicationUser

ApplicationUser loggedInUser = applicationDbContext.Users.Find(HttpContext.User.Identity.GetUserId());