在ASP.NET中的IdentityUserRole 2.0中获取角色名称

在更新entity framework中的dll之前,我能够做到这一点

user.Roles.Where(r => r.Role.Name == "Admin").FisrtOrDefault(); 

现在,我只能做r.RoleId,我找不到一种方法来检索thar Role Id的名字。 我在我的控制器和AuthorizeAttribute类中使用它。

有人可以帮我吗?

问候

询问RoleMananger ?

 RoleManager.Roles. // or RoleManager.FindByIdAsync() // or RoleManager.FindByNameAsync() 

您可能需要花些时间学习Asp.Net Security和Asp.Net Identity中的新安全function。

试试这个

 string id = UserManager.FindByEmail(model.Email).Id; IList roleNames=UserManager.GetRoles(id); 

如果您的目标是检查用户是否在角色中,您可以从动作中的IPrincipal.User对象访问它

 User.IsInRole("Admin"); 

我刚刚遇到了几乎完全相同的问题 ,我解决了这个问题:

 public class UserRole : IdentityUserRole { public virtual Role Role { get; set; } // add this to see roles public virtual User User { get; set; } // add this to see users } 

现在你的原始代码是user.Roles.Where(r => r.Role.Name == "Admin").FirstOrDefault(); 如果您因任何原因无法轻松访问RoleManager ,这将非常方便。