.Net Core Identity Framework 通过声明获取用户

Wij*_*tha 7 c# claims-based-identity asp.net-identity asp.net-core claims-authentication

在我们的 .NET Core Web API 中,我们已经配置了基于声明的授权并且它完美地工作。我们创建了角色声明并将角色分配给用户。我们不使用用户声明。

现在我有一个要求让用户有一个特定的要求。在 UserManager 中有一个方法 GetUsersByClaimAsync(Claim),它似乎只考虑用户声明。不是角色声明。所以在我的情况下,它不可用。

所以我想通过声明获取角色,然后通过角色获取用户(效率不高,因为它必须进行多次数据库调用才能分别获取每个角色的用户)。但即使这样做,也没有直接的方法可以通过 UserManager 或 RoleManager 中的声明来获取角色。

所以对我来说,除了自定义查询之外,似乎没有干净的方法可以实现这一点。

我不确定我在这里遗漏了什么。有没有人使用更好的方法实现了这一目标?

谢谢

itm*_*nus 2

现在我需要让用户拥有特定的声明。在UserManager中有一个方法GetUsersByClaimAsync(Claim),它似乎只考虑用户声明。不是角色声明。所以就我而言,它不可用。

我想你可以尝试一下UserManager<TUser>.GetUsersInRoleAsync(roleName)api:

var users = await _userManager.GetUsersInRoleAsync("Role1");
Run Code Online (Sandbox Code Playgroud)

顺便说一句,要使用上述api,您需要Role通过以下方式启用相关服务:

AddDefaultIdentity<IdentityUser>(options => { /*...*/ })
     .AddRoles<IdentityRole>()
    .AddEntityFrameworkStores<AppIdentityDbContext>();