H M*_*ail 4 razor asp.net-identity asp.net-core
我扩展了ApplicationUser
类,有2个额外的属性,FirstName
和LastName
.两个属性都在数据库中正确保留.
public class ApplicationUser : IdentityUser
{
[Required]
[StringLength(100)]
public string FirstName { get; set; }
[Required]
[StringLength(100)]
public string LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我正在关注一个简单的初学者示例,并且有问题的代码是由New Project with User Authentication命令生成的:
@inject SignInManager<ApplicationUser> SignInManager
@inject UserManager<ApplicationUser> UserManager
@if (SignInManager.IsSignedIn(User))
{
<form asp-area="" asp-controller="Account" asp-action="Logout" method="post" id="logoutForm" class="navbar-right">
<ul class="nav navbar-nav navbar-right">
<li>
<a asp-area="" asp-controller="Manage" asp-action="Index" title="Manage">Hello @UserManager.GetUserName(User)!</a>
</li>
<li>
<button type="submit" class="btn btn-link navbar-btn navbar-link">Log out</button>
</li>
</ul>
</form>
}
Run Code Online (Sandbox Code Playgroud)
而不是Hello @UserManager.GetUserName(User)!
我想说的Hello ???????.FirstName!
我找不到从视图中访问这些额外属性的方法.有关如何做到这一点的任何建议?
谢谢!
Cal*_*alC 10
您需要将UserManager注入您的服务(或在您的情况下查看).这有一个泛型类型参数,在您的情况下将是ApplicationUser
:
UserManager<ApplicationUser> userManager;
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过UserManager.Users属性查询用户.或者,如果您需要获取当前用户并让他们ClaimsPrincipal
可以使用以下代码来检索相应的ApplicationUser
:
ApplicationUser user = await UserManager.GetUserAsync(claimsPrincipal);
string firstName = user.FirstName;
Run Code Online (Sandbox Code Playgroud)
虽然我(个人)对此不太热衷,但.Net Core支持使用以下语法注入视图.
@inject UserManager<ApplicstionUser> UserManager
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2089 次 |
最近记录: |