Я разрабатываю приложение в ASP.NET MVC 5, и я использую Entity Framework. Я использую проект шаблона, который предоставляется в визуальной студии как начало моего собственного проекта. Я хотел бы иметь возможность создавать ViewModel для пользователей и ролей, где я могу видеть список пользователей против всех ролей, которые у них есть.ASP MVC Список пользователей и ролей
Базовый проект включает в себя таблицы AspNetUsers
и AspNetUserRoles
, которые имеют смысл для меня. Я использовал класс RoleManager
, предоставленный identity
, чтобы иметь возможность добавить роль, а затем добавить пользователя в эту роль.
protected override void Seed(Project.Models.ApplicationDbContext context)
{
var roleStore = new RoleStore<IdentityRole>(context);
var roleManager = new RoleManager<IdentityRole>(roleStore);
const string roleName = "admin";
var role = roleManager.FindByName(roleName);
if (role == null)
{
role = new IdentityRole(roleName);
var roleresult = roleManager.Create(role);
}
var rolesForUser = userManager.GetRoles(user.Id);
if (!rolesForUser.Contains(role.Name))
{
var result = userManager.AddToRole(user.Id, role.Name); // user.Id is retrieved accordingly
}
}
Все это работает. Но теперь я смущен тем, как я могу фактически просмотреть всех пользователей и роли против них, а точнее, как я могу привязать данные от AspNetUserRoles
к модели, а затем на ViewModel для меня, чтобы иметь возможность увидеть это и, возможно, изменить ? (Я пытаюсь создать панель администратора для управления этими пользователями).
Я бы предположил, что могу получить контроль над AspNetRoles
, возможно расширив класс IdentityRoles
? Но есть также класс IdentityUserRole
?
Я очень смущен тем, как я могу подойти к этой проблеме, и рекомендации будут оценены.
ли ваш пользовательский класс наследоваться от 'IdentityUser'? Потому что это то, откуда приходит мое замешательство. Теперь я могу получить список ролей из 'IdentityUserRoles' на' db.MyIdentityUser.Roles', но это возвращается как список идентификаторов, а не объект 'Role'. Мне интересно, как я могу попытаться связать «IdentityRole» с «IdentityUser», а точнее, как я могу реализовать эти классы из «Microsoft.AspNet.Identity». – Toby
@Toby ..... Да, Тоби ... есть функция GetRolesForUser в RoleProvider, в которой я написал запрос LINQ, который получает роли пользователя, тогда я использую его в любом месте моего проекта, используя User.IsInRole ("ADMIN") ..... – Sudhanshu