在布局视图中获取当前的应用程序器



我正在使用MVC5,创建了具有自定义属性的ApplicationUser : IdentityUser。现在,我想在layout.cshtml中获得自定义属性(avatar),以在不同的布局(标头,侧栏)视图中显示登录的用户映像。我该怎么做?

public class ApplicationUser : IdentityUser
{
    public string Avatar { get; set; }
    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
    {
        var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
        return userIdentity;
    }
}

目前,我正在使用@User.Identity.Name在我的视图中获取记录的用户名。我也想要用户图像。

我怎么能得到吗?

您可以将Avatar属性添加为IdentityClaim

public class ApplicationUser : IdentityUser
{
     public string Avatar { get; set; }
     public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
     {
           var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
           userIdentity.AddClaim(new Claim("avatar", this.Avatar));
           return userIdentity;
     }
}

在剃须刀视图内您可以像这样

访问它
@{
    var avatar = ((ClaimsIdentity)User.Identity).FindFirst("avatar");
}

相关内容

  • 没有找到相关文章

最新更新