使用新的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);
}
我在语法中缺少一些东西。
答案 0 :(得分:1)
首先获取您的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");