如何获取特定角色中的用户列表



如何在 ASP.net MVC5 中获取特定角色的用户列表。我有以下代码,但它返回所有用户。

 public ActionResult Index()
  {
        var users = Context.Users.ToList();
        return View(users);
  }

我的角色名称为"协调员"。我只希望所有用户都具有该角色。

查看文件

@model IEnumerable<Microsoft.AspNet.Identity.EntityFramework.IdentityUser>
@{
    ViewBag.Title = "Index";
}
<h2>Roles Listing </h2>
<div>
    <p><strong>Username | Email</strong></p>
    @foreach (var user in Model)
    {
        <p>
            @user.UserName   |   @user.Email | @Html.ActionLink("Delete", "Delete", new { id = user.Id })
        </p>
    }
</div>

假设每个用户实例的类型都是 ApplicationUser,并且您实现了基于角色的身份验证,则可以轻松地筛选具有特定角色的用户,如下所示:

public ActionResult Index()
{
        // Assuming that Coordinator has RoleId of 3
        var users = Context.Users.Where(x=>x.Roles.Any(y=>y.RoleId == 3)).ToList();
        return View(users);
}

首先创建ApplicationRoleManager类来管理如下所示的角色。

    public class ApplicationRoleManager : RoleManager<IdentityRole, string>
    {
        public ApplicationRoleManager(IRoleStore<IdentityRole, string> roleStore)
            : base(roleStore)
        {
        }
        public static ApplicationRoleManager Create(IdentityFactoryOptions<ApplicationRoleManager> options, IOwinContext context)
        {
            return new ApplicationRoleManager(new RoleStore<IdentityRole, string, IdentityUserRole>(context.Get<ApplicationDbContext>()));
        }
    }

然后将以下代码添加到 Startup.Auth.cs 类,以便在 owin 启动期间创建 RoleManager 的实例。

app.CreatePerOwinContext<ApplicationRoleManager>(ApplicationRoleManager.Create);

控制器操作应如下所示。

  public ActionResult Index()
  {
        var roleManager = HttpContext.GetOwinContext().Get<ApplicationRoleManager>();
        var users = roleManager.FindByName("Coordinator").Users;
        return View(users);
  }

希望这有帮助。

相关内容

  • 没有找到相关文章

最新更新