在更新实体框架中的dll之前,我可以这样做
user.Roles.Where(r => r.Role.Name == "Admin").FisrtOrDefault();
现在,我只能执行r.r eleid,并且我找不到一种方法来检索该角色Id的名称。我在控制器和AuthorizeAttribute类中使用这个
有人能帮我一下吗?对
试试这个
string id = UserManager.FindByEmail(model.Email).Id;
IList<string> roleNames=UserManager.GetRoles(id);
问角色经理?
RoleManager.Roles.
// or
RoleManager.FindByIdAsync()
// or
RoleManager.FindByNameAsync()
您可能需要花一些时间来学习Asp. js中的新安全特性。网络安全与Asp。净的身份。
我刚刚遇到了几乎完全相同的问题,我这样解决它:
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
的任何原因。
如果您的目的是检查用户是否在一个角色中,您可以从IPrincipal访问它。操作中的用户对象
User.IsInRole("Admin");