如何查找具有扩展属性值的角色中的所有用户Asp.net Identity 2

时间:2017-01-27 17:04:34

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

我在一个项目中使用Identity,该项目在ApplicationUser类中具有扩展属性作为OrganisationId。

我正在使用ApplicationUserManager来读取用户详细信息。

这是我的ApplicationUser类:

public class ApplicationUser
    : IdentityUser<int, ApplicationUserLogin,
        ApplicationUserRole, ApplicationUserClaim>, IUser<int>
{
    public async Task<ClaimsIdentity>
        GenerateUserIdentityAsync(UserManager<ApplicationUser, int> manager)
    {
        var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);

        userIdentity.AddClaim(new Claim("OrganisationId", OrganisationId.ToString()));
        return userIdentity;
    }

    public int OrganisationId { get; set; }
}

在AccountController类中,我注入了ApplicationUserManager对象。

然后,用户管理器对象为我提供了一种查找角色用户的方法。

 var isUserAdmin = await _userManager.IsInRoleAsync(userId, adminRoleName);

但我需要的是一种查找在组织中拥有管理员权限的所有用户的方法。

这样的事情:

_userManager.Users.Where(u=>u.OrganisationId=1 && u.Roles.Contains(adminRole))

但是这不起作用,因为Roles是ApplicationUserRole的集合。

任何想法如何设法让组织中的所有管理员用户?

1 个答案:

答案 0 :(得分:1)

只需使用:

u.Roles.Any(m => m.RoleId == adminRole.Id)

相反。