ASP.NET身份2:让所有用户都参与角色 - 最佳实践

时间:2015-08-07 07:01:31

标签: asp.net asp.net-identity-2

到目前为止我找到的示例似乎包括使用context.roles.name并且在身份2中不存在。如果确实如此,我会做出如下声明:

Context.Users.Where(u => u.roles.Any(r => r.name == "Administrator")).ToList();

但是Roles只有RoleId和UserId属性。因此,为了获得RoleId,我使用两个这样的语句:

var adminRole = db.Roles.Where(r => r.Name == "Administrator").FirstOrDefault();
string adminRoleId = (adminRole != null) ? adminRole.Id : "";
var students = db.Users.Where(u => u.Roles.Any(r => r.RoleId == adminRoleId)).ToList();

这成功地为我提供了该角色的用户列表。 这是最佳做法吗?

我看到使用UserManager的另一种方式是这样的:

var userStore = new UserStore<ApplicationUser>(context);
var userManager = new UserManager<ApplicationUser>(userStore);
List<ApplicationUser> administrators = new List<ApplicationUser>();
foreach (var user in context.Users.ToList())
        {
            if (userManager.IsInRole(user.Id, "Administrator"))
            {
                Students.Add(user);
            }
        }

但是,如果我对用户执行CRUD操作,我似乎只想使用UserManager。

0 个答案:

没有答案