gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 17:18:46 27 4
gpt4 key购买 nike

如何获取用户列表,包括每个用户的角色名称?
我的应用程序具有 MVC 项目的默认表。

我可以像这样使用 Identity 2.1 检索所有用户:

模型

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

Controller
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 Identity 中的东西往往会使人们感到困惑。最终,用户仍然只是一个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 - ASP.net Identity 2.1 获取所有具有角色的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26894327/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com