列出特定角色中的所有用户



在ASP中。NET Core 2.2 MVC我正在尝试获得一个特定角色中所有用户的列表
Fx。名为"管理员"的角色中的所有用户的列表:

var idsWithPermission = _userManager.GetUsersInRoleAsync("Admin").Result;
var users = _db.ApplicationUser.Where(u => idsWithPermission.Contains(u.Id)).ToListAsync();
return(users);

编译器在此处"u.Id"失败:idsWithPermission.Contains(u.Id)

错误:参数1:无法从"字符串"转换为Microsoft。AspNetCore。身份身份用户

这是一个新手问题,所以对于鲨鱼来说可能很简单:-(提前非常感谢。。。

GetUsersInRoleAsync返回IdentityUser对象的列表。要获得ID列表,您需要访问这些对象的Id属性。

// Get a list of users in the role
var usersWithPermission = _userManager.GetUsersInRoleAsync("Admin").Result;
// Then get a list of the ids of these users
var idsWithPermission = usersWithPermission.Select(u => u.Id);
// Now get the users in our database with the same ids
var users = _db.ApplicationUser.Where(u => idsWithPermission.Contains(u.Id)).ToListAsync();
return users;

请注意,不建议在async方法上使用.Result,因为这可能会导致死锁。相反,使用await并使您的方法成为async


还要注意,根据您的设置,如果ApplicationUser继承自IdentityUser,并且正确配置了标识系统,则GetUsersInRoleAsync将已经返回ApplicationUser对象,您只需要将它们强制转换为正确的类型:

// Get a list of users in the role
var usersWithPermission = _userManager.GetUsersInRoleAsync("Admin").Result;
var users = usersWithPermission.OfType<ApplicationUser>();
return users;

相关内容

  • 没有找到相关文章

最新更新