中
我正在尝试向用户添加扩展属性。
在IdentityModel.cs中,我添加了一个名为eBrowadmin的字段:
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
userIdentity.AddClaim(new Claim("EbrowAdmin", EbrowAdmin.ToString()));
return userIdentity;
}
public bool EbrowAdmin { get; set; }
我在项目文件夹中创建了一个名为Extensions的Foler,并添加了一个名为Extensions.cs的类:
public static class Extensions
{
public static string GetEbrowAdmin(this IIdentity identity)
{
var claim = ((ClaimsIdentity)identity).FindFirst("EbrowAdmin");
// Test for null to avoid issues during local testing
return (claim != null) ? claim.Value : string.Empty;
}
}
现在,我可以从控制器中访问以下情况:
User.Identity.GetEbrowAdmin();
但是,我无法通过相同的代码从我的视图中访问它:
@User.Identity.GetEbrowAdmin();
有什么想法我缺少什么?
您需要说明有关扩展的看法。就像普通的C#代码一样,视图不知道任何自定义代码,直到您将代码的名称空间包含在使用A中。
尝试将using <YOURPROJECT>.<YOURNAMESPACE>.Extensions
放在您的直接视图或ViewStart.cshtml