首页 > 解决方案 > ASP.net Identity - 获取“admin”或“adminlower”角色的用户集合

问题描述

我可以获取所有用户的集合,并使用如下 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);

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

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

解决方案


我没有对此进行测试,但您可能正在寻找类似的东西:

你可以得到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以过滤管理员。但是除非您的用户群相当小,否则您不想这样做。


推荐阅读