Подтвердить что ты не робот

Получить имя роли в IdentityUserRole 2.0 в ASP.NET

Перед обновлением dll в Entity Framework я смог сделать это

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

Теперь я могу делать только r.RoleId, и я не могу найти способ вернуть имя идентификатора Role. Я использую это в своих контроллерах и в моем классе AuthorizeAttribute.

Может кто-нибудь помочь мне здесь?

Привет

4b9b3361

Ответ 1

Задайте RoleMananger?

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

Вы можете потратить некоторое время и изучить новые функции безопасности в Asp.Net Security и Идентификация Asp.Net.

Ответ 2

Попробуйте это

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

Ответ 3

Если ваша цель - проверить, находится ли пользователь в роли, вы можете получить к нему доступ из объекта IPrincipal.User в действии

User.IsInRole("Admin");

Ответ 4

У меня только почти такая же проблема, и я решил это следующим образом:

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 по любой причине.