我已将名字和姓氏添加到ApplicationUser
类中。
public class ApplicationUser : IdentityUser
{
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
public string FirstName { get; set; }
public string LastName { get; set; }
}
还向RegisterViewModel
添加了信息
我的应用程序成功地在表中创建了First和LastName
,但我无法获得要在_LoginPartial
"User.Identity.Name"中显示的名字和姓氏
在您的局部视图_LoginPartial.cshtml
中
添加代码:
@if (Request.IsAuthenticated)
{
var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
var user = manager.FindById(User.Identity.GetUserId());
...
}
ApplicationDbContext
=您的DBContext->默认值:ApplicationDbContext
以ApplicationUser (user)
为例,可以得到First-
和LastName
属性的
将User.Identity.Name
替换为user.FirstName + " " + user.LastName
,如下所示:
<ul class="nav navbar-nav navbar-right">
<li>
@Html.ActionLink("Hello " + user.FirstName + " " + user.LastName + "!", "Manage", "Account", routeValues: null, htmlAttributes: new { title = "Manage" })
</li>
<li><a href="javascript:document.getElementById('logoutForm').submit()">Log off</a></li>
</ul>
当用户登录时,您需要将名称添加为用户的声明。然后在您的视图中从ClaimsPrincipal.Current.Claims
访问这些声明。看看我的答案,它几乎是一样的,只是你需要添加名称而不是主题。