ASP.net Identity 2.1 获取所有有角色的用户

 2023-02-15    330  

问题描述

如何获得每个用户包含角色名称的用户列表?
我的应用程序有MVC项目的默认表.

我能够使用这样的识别2.1检索所有用户:

ASP.net 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和alid它是从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查询到您的用户.

以上所述是小编给大家介绍的ASP.net Identity 2.1 获取所有有角色的用户,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/33799.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。