我使用个人身份验证方法创建了一个新的MVC项目,其中ASP.NET Identity作为我的身份验证和授权框架。我成功为应用添加了3个角色:Admin
,Customer
,Owner
。
现在,我已经在我的HomeController
中制作了三种操作方法:"所有管理员","所有客户","所有者" 。在每种操作方法中,如何显示每个角色中的用户及其总计数?当我点击"所有管理员"它显示所有具有管理员角色的用户,并且与"所有客户"相同。和#34;所有者"动作。
答案 0 :(得分:6)
您可以使用RoleManager
和UserManager
。后者允许您仅查询RoleId,因此您必须首先查找角色:
// Look up the role
string roleName = "Admin";
var role = await _roleManager.Roles.SingleAsync(r => r.Name == roleName);
// Find the users in that role
var roleUsers = _userManager.Users.Where(u => u.Roles.Any(r => r.RoleId == role.Id));
现在,您可以将roleUsers
发送到显示用户及其总数的视图。
答案 1 :(得分:2)
我有类似的问题所以我使用了这样的东西:
var administrators = from role in _roleManager.Roles
from userRoles in role.Users
join user in _userManager.Users on userRoles.UserId equals user.Id
where role.Name == "Administrator"
select new UserVm()
{
Id = user.Id,
FirstName = user.FirstName,
LastName = user.LastName,
Email = user.Email,
Role = role.Name
};
答案 2 :(得分:1)
我找不到SingleAsync
的{{1}}方法,如下所述
CodeCaster。
因此,还有另一种方法可以通过名称获得角色:
RoleManager
然后获取用户:
string roleName = "Employee";
var role = await RoleManager.FindByNameAsync(roleName);