我正在使用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");
}