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

Get Role name in IdentityUserRole 2.0 in ASP.NET

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

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

现在,我只能做 r.RoleId,而且我找不到方法来检索角色 ID 的名称。我在我的控制器和我的 AuthorizeAttribute class.

中使用它

有人可以帮我吗?

此致

RoleMananger?

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

您可能需要花些时间了解 Asp.Net Security and Asp.Net Identity 中的新安全功能。

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

User.IsInRole("Admin");

试试这个

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

我刚刚 我是这样解决的:

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,这可能会很方便。