例如:
我有一个简单的应用程序!
默认情况下,默认情况下会实现简单的用户注册页面和登录页面(当我们选择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...
}
答案 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());