c# - 如何访问经过身份验证和授权的用户详细信息?
问题描述
例如:
我有一个简单的应用程序!
并且默认实现了简单的用户注册页面和登录页面(当我们选择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...
}
解决方案
您可以注入 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;
希望这可以帮助。
推荐阅读
- django - Django模型,保存对象
- c# - 如何仅等待 C# 循环中声明的最后一个线程?
- java - 数组列表元素相乘的递归方法
- excel - 自动完成下拉列表
- angular - Angular document.addEventListener 监听外部点击
- r - R plot没有根据文档添加绘图颜色?
- c - 为什么我会收到错误消息:'awk: read error (Is a directory)'
- php - Laravel 8 实现 PHP 的 DOM XML 函数输出 XML
- javascript - 更改 Material UI 中的步骤时,垂直步进器应滚动到顶部反应
- css - 第二行和后续行没有在网格中指定全高