我找到了这个返回记录用户角色的扩展方法。
public static List<string> Roles(this ClaimsIdentity identity)
{
return identity.Claims
.Where(c => c.Type == ClaimTypes.Role)
.Select(c => c.Value)
.ToList();
}
我该如何使用这个分机。控制器的方法?或者是否可以进一步扩展此方法以使用User.Identity然后获得用户角色?
答案 0 :(得分:0)
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();
}
}
}
获取扩展方法所在的命名空间,上面的示例为Identity.Extensions
,并将其作为using语句添加到要使用该方法的文件中。
using Identity.Extensions;
然后,如果您有一个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>>();
}
}
}