如何使用ASP.Net Identity Framework 2.0确定用户是否属于某个组

时间:2014-06-17 23:33:53

标签: c# asp.net asp.net-mvc asp.net-identity

使用新的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);
}

我在语法中缺少一些东西。

1 个答案:

答案 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");