获取角色内的所有用户.ASP.NET标识



我可以让所有用户都喜欢这个

var users = UserManager.Users.ToList();

我可以找到像这样的角色

var role = db.Roles.SingleOrDefault(m => m.Name == "User");

我想在AspNetRoles表中列出所有角色名称为"User"的用户(我有UserAdmin)。

var role = db.Roles.SingleOrDefault(m => m.Name == "User");
var usersInRole = db.Users.Where(m => m.Roles.Any(r => r.RoleId == role.Id)).ToList();
return View(usersInRole);

我在var role中得到了这个角色,但在调试时userInRole给了我Count = 0。没有编译错误。

您可以使用以下代码来检索特定角色(Identity 2.x.x)中的所有用户:

var users = await _userManager.GetUsersInRoleAsync("RoleName");

或用于同步用法:

var users = _userManager.GetUsersInRoleAsync("RoleName").GetAwaiter().GetResult();
var usersInRole = db.Users.Where(m => m.Roles.RoleId == role.Id)).ToList();

您搜索所有用户并返回符合特定角色id 的用户

您尝试过使用导航属性Lazy Loading吗?

var role = db.Roles.SingleOrDefault(m => m.Name == "User");
var usersInRole = role.Users;

您可以使用Linq表达式基查询,如下所示:

var roleUserIdsQuery=from role in db.Roles 
                where role.Name=="User"
                from user in role.Users
                select user.UserId;
var users=db.Users.Where(u=>roleUserIdsQuery.Contains(u.Id)).ToList();

对于Identity 2.0…和.NET Framework 4.5+

检查IdentityConfig.cs以确保角色管理器配置正确。

var roleManager=HttpContext.GetOwinContext().GetUserManager();

var users=roleManager.FindByName("管理员").users.ToList();

相关内容

  • 没有找到相关文章

最新更新