【问题标题】:How to get all the users from an specific role如何从特定角色获取所有用户
【发布时间】:2017-08-16 18:11:05
【问题描述】:

我得到了我的Users,它分为两类:StudentProfessor,我试图让所有用户都属于Professor 角色,但我不知道我是什么'我做错了。

这是我尝试这样做的代码:

RoleManager<IdentityRole> roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context));
List<IdentityUserRole> professors = roleManager.FindByName("Professor").Users.ToList();

List<AppUser> users = new List<AppUser>();

foreach(IdentityUserRole iuser in professors)
{
    AppUser user = manager.FindById(iuser.UserId);
    users.Add(user);
}

Professors 出于某种原因仍然为空。 任何人都可以帮我一把吗?

【问题讨论】:

    标签: c# asp.net entity-framework asp.net-identity


    【解决方案1】:

    我怀疑是否已经有内置功能用于此目的,但您可以通过这种方式获取用户:

    public async Task GetUsersInRole()
    {
        ApplicationDbContext context = new ApplicationDbContext();
        var roles = context.Roles.Where(r => r.Name == "Professor");
        if (roles.Any())
        {
            var users = await UserManager.Users.ToListAsync();
            var result = (from c in users
                           where c.Roles.Any(r => r.RoleId == roles.First().Id)
                           select c);
        }
    }
    

    然后像这样调用方法:

    public async Task<ActionResult> Index()
    {
        await GetUsersInRole();
        return View();
    }
    

    【讨论】:

    • 我刚试过。而且我仍然不断收到一个空的 json 数组。
    • 我在 Postman 上的结果如下:[]。是的,我刚刚检查了角色名的拼写是否正确。我什至试图通过 id 找到它,但同样的事情发生了。
    • @RottenCheese 你确定你的角色名称是“教授”吗?
    • 100%。这就是确切的角色名称。
    • @RottenCheese 好的。我发现了问题所在。应该是async。检查我更新的答案。它现在应该可以按预期工作了。
    猜你喜欢
    • 2021-02-24
    • 1970-01-01
    • 2016-06-18
    • 2022-10-07
    • 1970-01-01
    • 2023-03-21
    • 2014-08-31
    • 1970-01-01
    • 2012-02-27
    相关资源
    最近更新 更多