查找具有特定角色的用户

时间:2017-06-01 07:44:44

标签: c# asp.net-mvc asp.net-identity user-roles

我的代码是:

public async Task<ActionResult> Index()
{
    var teaching = db.Teachings.Include(d =>d.Course).Include(d=>d.Group).Include(d => d.User);

    return View(await teaching.ToListAsync());
}

我想知道如何过滤某些角色,我的意思是,如果可以的话,我如何只过滤具有特定角色的用户。

我认为可能的解决方案可能是....Include(d => d.Users).Where(...),但我不知道如何比较我正在使用的用户与特定角色的角色。

我的角色是老师,管理员或学生。

总之,只过滤角色为“老师”的用户。

4 个答案:

答案 0 :(得分:0)

一种简单的方法是使用Identity的UserManager类。它有一个 UserInRole 函数,它返回一个bool。您可以做的是遍历用户并检查此功能。

样品:

foreach(var user in Users)
{
    var isInRole = UserManager.UserInRole(user, "RoleName");
}

答案 1 :(得分:0)

您可以编写一个linq为您执行此操作,选择与用户相关联的所有教师任何他们的角色等于教师,这样写的,供您参考

var teaching = db.Teachings
                    .Include(d =>d.Course)
                    .Include(d=>d.Group)
                    .Include(d => d.User)
                    .Include(d => d.User.Roles)
                    .Where(d => d.User.Roles.Any(r => r.Name == "teacher")));

答案 2 :(得分:-1)

也许你可以试试: db.Teachings.Include(d =&gt; d.Course).Include(d =&gt; d.Group).Include(d =&gt; d.User.Where(us =&gt; ur.Role ==&#34 ;老师&#34));

我希望这有帮助!

答案 3 :(得分:-1)

假设您使用的是ASP.net提供的Identity Framework,您只需使用UserManager即可实现。

在UserManager中,它有一个功能,即GetUsersInRoleAsync(string roleName)。这将返回角色中的用户列表。

你可以做到

var userThatYouWant = _userManager.GetUsersInRoleAsync("RoleName");

瞧,该列表将包含具有您指定角色的所有用户。

如果您已正确初始化_userManager,则假定这是假设。