C# 使用来自控制器的ClaimSideEntity ext.方法
我发现这个扩展方法返回登录用户的角色C# 使用来自控制器的ClaimSideEntity ext.方法,c#,.net,asp.net-mvc,C#,.net,Asp.net Mvc,我发现这个扩展方法返回登录用户的角色 public static List<string> Roles(this ClaimsIdentity identity) { return identity.Claims .Where(c => c.Type == ClaimTypes.Role) .Select(c => c.Value)
public static List<string> Roles(this ClaimsIdentity identity)
{
return identity.Claims
.Where(c => c.Type == ClaimTypes.Role)
.Select(c => c.Value)
.ToList();
}
公共静态列表角色(此索赔实体标识)
{
返回身份。索赔
.Where(c=>c.Type==ClaimTypes.Role)
.选择(c=>c.Value)
.ToList();
}
如何从控制器使用此ext.方法?或者可以进一步扩展此方法以使用User.Identity,然后获取用户角色吗
namespace Identity.Extensions
{
public static class UserExtensions()
{
public static List<string> Roles(this ClaimsIdentity identity)
{
return identity.Claims
.Where(c => c.Type == ClaimTypes.Role)
.Select(c => c.Value)
.ToList();
}
}
}
然后,当您拥有ClaimsIdentity
对象时,例如从用户管理器的CreateIdentityAsync
方法返回的对象,您将能够访问此方法:
using Identity.Extensions;
public class YourClass()
{
public void DoSoemthingWithUser()
{
var identity = await this.UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
// Use extension method
var roles = identity.Roles();
}
public UserManager UserManager
{
get
{
return HttpContext.Current.GetOwinContext().GetUserManager<UserManager<IdentityUser>>();
}
}
}
使用Identity.Extensions;
公共类YourClass()
{
public void DoSoemthingWithUser()
{
var identity=wait this.UserManager.createidentitysync(user,DefaultAuthenticationTypes.applicationcokie);
//使用扩展方法
var roles=identity.roles();
}
公共用户管理器用户管理器
{
收到
{
返回HttpContext.Current.GetOwinContext().GetUserManager();
}
}
}
using Identity.Extensions;
public class YourClass()
{
public void DoSoemthingWithUser()
{
var identity = await this.UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
// Use extension method
var roles = identity.Roles();
}
public UserManager UserManager
{
get
{
return HttpContext.Current.GetOwinContext().GetUserManager<UserManager<IdentityUser>>();
}
}
}