在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
,这将非常方便。