是否有任何合理有效的方法来获取不属于特定角色的用户列表?
我能看到的唯一方法是
从数据库中获取所有用户并检查代码
直接进入数据库并回避角色提供者
是否有任何合理有效的方法来获取不属于特定角色的用户列表?
我能看到的唯一方法是
从数据库中获取所有用户并检查代码
直接进入数据库并回避角色提供者
在 Alex 提供的代码中将 Select 更改为 Where 实际上会返回结果,而不仅仅是 true/false。
var usersInRole = Roles.GetUsersInRole("admin");
var users = Membership.GetAllUsers()
.Cast<MembershipUser>()
.Where(u =>
!usersInRole.Contains(u.UserName)
);
另一种方法是使用 GetUsersNotInRole() 方法扩展 RoleProvider 并在那里查询数据库。您还可以将 RoleProvider.GetUsersInRole() 与 MembershipProvider.GetAllUsers() 结合起来,找出不同之处
您可以获取所有用户列表并提取列表中指定角色的用户:
var usersInRole = Roles.GetUsersInRole("admin");
var users = Membership.GetAllUsers()
.Cast<MembershipUser>()
.Select(u =>
!usersInRole.Contains(u.UserName)
);
我不认为绕过角色提供者直接查询数据库有什么问题。这样你肯定会得到最好的表现。
找到这种方式,希望这对其他人也有帮助。很容易。
var usernames = Roles.GetUsersInRole("Administrator");
var adminUsers = db.UserProfiles
.Where(x => !usernames.Contains(x.UserName)).ToList();
return View(adminUsers);