Ответ 1
Задайте RoleMananger?
RoleManager.Roles.
// or
RoleManager.FindByIdAsync()
// or
RoleManager.FindByNameAsync()
Вы можете потратить некоторое время и изучить новые функции безопасности в Asp.Net Security и Идентификация Asp.Net.
Перед обновлением dll в Entity Framework я смог сделать это
user.Roles.Where(r => r.Role.Name == "Admin").FisrtOrDefault();
Теперь я могу делать только r.RoleId, и я не могу найти способ вернуть имя идентификатора Role. Я использую это в своих контроллерах и в моем классе AuthorizeAttribute.
Может кто-нибудь помочь мне здесь?
Привет
Задайте RoleMananger?
RoleManager.Roles.
// or
RoleManager.FindByIdAsync()
// or
RoleManager.FindByNameAsync()
Вы можете потратить некоторое время и изучить новые функции безопасности в Asp.Net Security и Идентификация Asp.Net.
Попробуйте это
string id = UserManager.FindByEmail(model.Email).Id;
IList<string> 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
по любой причине.