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>>(); 
        }
    }
}