ASP.net身份-以“管理员”或“ adminlower”角色获取用户集合

时间:2019-05-19 10:31:18

标签: c# asp.net-identity asp.net-identity-2

我可以获得所有用户的集合,并使用一些Linq来订购他们,如下所示:

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

我想将返回的用户限制为具有“ admin”或“ adminlower”角色的用户。我搜索了很多东西,发现像这样的东西,但它们无济于事:

http://aryalnishan.com.np/asp-net-mvc/list-all-users-with-associated-roles-in-asp-net-identity/

我已经尝试过了,但是也行不通:

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

我似乎无法获取语法,该怎么办?

1 个答案:

答案 0 :(得分:1)

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

您可以通过这种方式获得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);

另一种选择可能是加载所有用户,然后使用UserManager.IsInRoleAsync循环浏览以过滤管理员。但是除非您的用户群很小,否则您不希望这样做。