我在一个项目中使用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的集合。
任何想法如何设法让组织中的所有管理员用户?
答案 0 :(得分:1)
只需使用:
u.Roles.Any(m => m.RoleId == adminRole.Id)
相反。