具有名和姓的MVC User.Identity.Name

时间:2014-09-03 11:34:45

标签: asp.net asp.net-mvc-4 razor asp.net-identity

我已将{名字和姓氏添加到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

添加了信息

我的应用程序成功创建了第一个和LastName到表中,但我无法获得要显示在_LoginPartial&#34; User.Identity.Name&#34; <的名字和姓氏。 / p>

2 个答案:

答案 0 :(得分:10)

部分视图中的

_LoginPartial.cshtml

添加代码:

@if (Request.IsAuthenticated)
{
    var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
    var user = manager.FindById(User.Identity.GetUserId());
...
}

ApplicationDbContext =您的DBContext - &gt;默认值: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>

答案 1 :(得分:3)

当用户登录时,您需要在用户上添加名称作为声明。然后在您的观看中,从ClaimsPrincipal.Current.Claims访问这些声明。看看my answer here几乎完全相同,只需要添加名称而不是主题。