加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-identity – ASP.net Identity 2.1获取所有角色的用户

发布时间:2020-12-16 03:35:20 所属栏目:asp.Net 来源:网络整理
导读:如何获取用户列表,包括每个用户的角色名称? 我的应用程序具有MVC项目的默认表. 我能够使用Identity 2.1检索所有用户,如下所示: 模型 public class GetVendorViewModel{ public IListApplicationUser Vendors { get; set; }} 调节器 public ActionResult In
如何获取用户列表,包括每个用户的角色名称?
我的应用程序具有MVC项目的默认表.

我能够使用Identity 2.1检索所有用户,如下所示:

模型

public class GetVendorViewModel
{
    public IList<ApplicationUser> Vendors { get; set; }
}

调节器

public ActionResult Index()
        {

            var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
            var roleStore = new RoleStore<IdentityRole>(ac);
            var roleManager = new RoleManager<IdentityRole>(roleStore);
            var vendor = roleManager.FindByName("Vendor").Users;
            var model = new GetVendorViewModel { Vendors = vendor };
            return View("~/Views/User/Administrator/Vendor/Index.cshtml",model);
        }

现在回来了:

[
   {
      UserId: "4f9ed316-a852-45a9-93a8-a337a37b1c74",RoleId: "a17bb59c-285a-43f9-b5ad-65f46f94bb4f"
   }
]

这是正确的,但我需要显示用户信息,如姓名,电子邮件,用户名等.

我想像这样返回一个json对象:

[
  {
    UserId: "4f9ed316-a852-45a9-93a8-a337a37b1c74",RoleId: "a17bb59c-285a-43f9-b5ad-65f46f94bb4f"
    RoleName: "Administrator"
    User: {
            name:"Joe Doe",email:"jd@mail.com",...
          }
  },{
    ...
  }
]

RoleName位于AspNetRoles表中.

UserId和RoleId是来自AspNetUserRoles的查询.

有线索吗?

解决方法

身份中的UserManager内容往往会让人感到困惑.最终,用户仍然只是您上下文中的DbSet,因此您可以使用您的上下文,例如查询任何其他对象:

var role = db.Roles.SingleOrDefault(m => m.Name == "role");
var usersInRole = db.Users.Where(m => m.Roles.Any(r => r.RoleId == role.Id));

编辑忘了IdentityUser.Roles直接引用IdentityUserRole而不是IdentityRole.因此,您需要先获得角色,然后使用角色的ID来查询您的用户.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读