ASP.net 标识 - 获取具有"admin"或"adminlower"角色的用户集合



我可以获取所有用户的集合,并用这样的linq订购它们:

var Users = UserManager.Users.ToList().OrderBy(x => x.DateCreated)

我想限制用户返回到具有"管理员"或"管理员"角色的人。我已经搜索了很多东西,找到了这样的东西,但它们无济于事:

http://aryalnishan.com.np/asp-net-mvc/list-allist-all--users-with-sassiate-roles-roles-in-asp-net-indistity/

我已经尝试过,也不起作用:

var AdminRoles = new string[] { "admin", "adminlower" };
var Roles = RoleManager.Roles;
Roles.Contains(AdminRoles);

我似乎无法获得语法,我该怎么做?

我尚未测试过,但是您可能正在寻找类似的东西:

您可以以这种方式获得roleId

var roleManager= new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context));
//Get admin role
var adminRole= roleManager.FindByName("Admin");
var admins=context.Users.Where(x=>x.Roles.Any(role=>role.RoleId==adminRole.Id)).ToList().OrderBy(d=>d.DateCreated);

另一个选项可能是 load 所有用户,然后通过使用UserManager.IsInRoleAsync循环进行过滤管理员。但是,除非您的用户群相当小,否则您不想这样做。

要通过一个角色获取用户列表,usermanager中有一种构建方法。您可以尝试以下内容:

var adminUsers = (await userManager.GetUsersInRoleAsync("rolename")).ToList();

应该解决您的问题。

相关内容

  • 没有找到相关文章

最新更新