Получение всех пользователей и всех ролей через идентификатор asp.net
У меня есть новый проект, который я создал в VS 2013. Я использую систему идентификации, и я запутался, как получить список всех пользователей приложения и всех ролей в его приложении. Я пытаюсь создать некоторые страницы администратора, чтобы я мог добавлять новые роли, добавлять роли пользователям, видеть, кто все зарегистрирован или заблокирован.
Кто-нибудь знает, как это сделать?
Ответы
Ответ 1
В ASP.NET Identity 1.0 вам нужно получить это от самого DbContext...
var context = new ApplicationDbContext();
var allUsers = context.Users.ToList();
var allRoles = context.Roles.ToList();
В ASP.NET Identity 2.0 (в настоящее время в Alpha) эта функция отображается на страницах UserManager
и RoleManager
...
userManager.Users.ToList();
roleManager.Roles.ToList();
В обеих версиях вы будете взаимодействовать с RoleManager
и UserManager
, чтобы создавать роли и назначать роли пользователям.
Ответ 2
Основываясь на том, что сказал Энтони Чу, в Identity 2.x, вы можете получить роли с помощью специального вспомогательного метода:
public static IEnumerable<IdentityRole> GetAllRoles()
{
var context = new ApplicationDbContext();
var roleStore = new RoleStore<IdentityRole>(context);
var roleMgr = new RoleManager<IdentityRole>(roleStore);
return roleMgr.Roles.ToList();
}
Ответ 3
Основываясь на Энтони Чу и Алексе.
Создание двух вспомогательных классов...
public class UserManager : UserManager<ApplicationUser>
{
public UserManager()
: base(new UserStore<ApplicationUser>(new ApplicationDbContext()))
{ }
}
public class RoleManager : RoleManager<IdentityRole>
{
public RoleManager()
: base(new RoleStore<IdentityRole>(new ApplicationDbContext()))
{ }
}
Два способа получения ролей и пользователей.
public static IEnumerable<IdentityRole> GetAllRoles()
{
RoleManager roleMgr = new RoleManager();
return roleMgr.Roles.ToList();
}
public static IEnumerable<IdentityUser> GetAllUsers()
{
UserManager userMgr = new UserManager();
return userMgr.Users.ToList();
}
Два примера методов, использующих GetRoles() и GetUsers(), чтобы просмотреть раскрывающийся список.
public static void FillRoleDropDownList(DropDownList ddlParm)
{
IEnumerable<IdentityRole> IERole = GetAllRoles();
foreach (IdentityRole irRole in IERole)
{
ListItem liItem = new ListItem(irRole.Name, irRole.Id);
ddlParm.Items.Add(liItem);
}
}
public static void FillUserDropDownList(DropDownList ddlParm)
{
IEnumerable<IdentityUser> IEUser = GetAllUsers();
foreach (IdentityUser irUser in IEUser)
{
ListItem liItem = new ListItem(irUser.UserName, irUser.Id);
ddlParm.Items.Add(liItem);
}
}
Пример использования :
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
FillRoleDropDownList(ddlRoles);
FillUserDropDownList(ddlUser);
}
}
спасибо Энтони и Алексу за то, что помогли мне понять эти классы Identity.
Ответ 4
System.Web.Security Класс ролей также позволяет получить список ролей.
List<String> roles = System.Web.Security.Roles.GetAllRoles();