如何确定用户是否属于某个组.网络身份框架2.0

本文关键字:身份 网络 框架 用户 何确定 是否 属于 | 更新日期: 2023-09-27 18:08:59

使用新的ASP。Net Identity Framework 2.0,我正在尝试确定属于某个组的用户列表。

UserManager和RoleManager是正确的实例化,我得到正确的信息,而调试,但我不明白如何使用user.Roles.Contains。

var _listAllUsers = UserManager.Users.ToListAsync().Result;
//var _allUsers = UserManager.Users;
var roleToMatch = RoleManager.FindByNameAsync("MyUserManager").Result;
foreach (var user in _listAllUsers){
var _listGroupAdminCat = user.Roles.Contains((IdentityUserRole)roleToMatch);
}

我在语法中遗漏了一些东西。

如何确定用户是否属于某个组.网络身份框架2.0

首先获得您的IdentityRole对象:

var role = RoleManager.FindByName("MyUserManager");

然后获取该角色中的用户:

var usersInRole = role.Users;

你的问题标题问了一个稍微不同的问题,如何确定用户是否在一个角色中。为此,像这样使用UserManager:

int userId = 5;
string roleToCheck = "MyRole";
bool userIsInRole = userManager.IsInRole(5, roleToCheck );

同样值得注意的是,在你发布的代码中,你错误地使用了异步函数。可以将它们与await关键字一起使用,或者使用同步版本:

var roleSynchronously = RoleManager.FindByName("MyUserManager");
var roleAsynchronously = await RoleManager.FindByNameAsync("MyUserManager");