通过asp.net身份获取所有用户和所有角色

时间:2014-02-02 00:37:04

标签: asp.net visual-studio-2013 asp.net-identity

我有一个我在VS 2013中创建的新项目。我正在使用身份系统,我很困惑如何获取应用程序的所有用户列表以及应用程序中的所有角色。我正在尝试创建一些管理页面,以便我可以添加新角色,向用户添加角色,查看所有人都已登录或锁定。

有人知道怎么做吗?

4 个答案:

答案 0 :(得分:25)

在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)中,此功能在UserManagerRoleManager上公开...

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

在这两个版本中,您将与RoleManagerUserManager进行交互,以创建角色并为用户分配角色。

答案 1 :(得分:1)

基于Anthony Chu所说的,在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();
}

答案 2 :(得分:1)

以Anthony Chu和Alex为基础。
创建两个辅助类......

    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);
        }
    }
感谢Anthony和Alex帮助我理解这些身份类别。

答案 3 :(得分:-1)

System.Web.Security Roles类还允许获取角色列表。

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