在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
,这将非常方便。
- ASP.NET Core Identity 3 Cookie超时
- 自定义和集成自己的数据库与mvc5身份
- 扩展ASP.NET身份
- 从基础asp.net标识用户创建inheritance用户
- 即使删除用户,ASP.Net Identity Identity.IsAuthenticated仍然是正确的
- 如何正确实现其他实体对Identity用户的引用?
- Identity Owin是否需要LazyLoading?
- ‘Compare’是’System.ComponentModel.DataAnnotations.CompareAttribute’和’System.Web.Mvc.CompareAttribute’之间的模糊引用。
- User.IsInRole在ASP.NET Core中没有返回任何内容(已实现存储库模式)