我正在使用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在我的视图中获取登录的用户名.我也想要用户形象.
我怎么能得到它?
解决方法
您可以添加头像属性作为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"); }