2014-02-02 4 views
13

У меня есть новый проект, созданный в VS 2013. Я использую систему идентификации, и я запутался, как получить список всех пользователей приложения и всех ролей в приложении. Я пытаюсь создать некоторые страницы администратора, чтобы я мог добавлять новые роли, добавлять роли пользователям, видеть, кто все зарегистрирован или заблокирован.Получение всех пользователей и всех ролей через asp.net Identity

Кто-нибудь знает, как это сделать?

ответ

24

В ASP.NET Идентичность 1.0, вы должны получить это от самого DbContext ...

var context = new ApplicationDbContext(); 
var allUsers = context.Users.ToList(); 
var allRoles = context.Roles.ToList(); 

В ASP.NET Идентичность 2,0 (в настоящее время в Альфа), эта функция подвергается воздействию на UserManager и RoleManager ...

userManager.Users.ToList(); 
roleManager.Roles.ToList(); 

в обеих версиях, вы будете взаимодействовать с RoleManager и UserManager для создания ролей и назначить роли для пользователей.

+2

Спасибо, человек, это отлично работает. Не могу дождаться 2.0, так что это немного легче. –

+0

Есть ли способ фильтровать пользователей и получать те, кто вошел в систему? Я не могу найти такое поле в классе IdentityUser –

+4

Эта функциональность не существует из коробки. Скорее всего, потому, что это непросто сделать, и определение «вход в систему» ​​отличается в зависимости от приложения. Например, пользователь вошел в систему, пока не выйдет из системы? Что делать, если они используют несколько браузеров или устройств, и они вышли из одного из них? Возможно, «вошел в систему» ​​в каком-то сценарии означает, что пользователь был активным в течение последних шести минут. Как бы вы хотели работать в своем приложении? Возможно, это хорошая отправная точка для обсуждения. –

-1

System.Web.Security Класс ролей также позволяет получить список ролей.

List<String> roles = System.Web.Security.Roles.GetAllRoles();

+3

Этот класс родился до прибытия в Asp.Net Identity. – Bellash

1

Опираясь на то, что сказал Энтони Чу, в идентичности 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(); 
} 
1

Опираясь на Энтони Чу и Алекс.
Создание двух вспомогательных классов ...

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(), чтобы populat выпадающего списка.

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.

Смежные вопросы