获取在 asp.net identity 2.0 中分配角色的用户列表 [英] Get list of users with assigned roles in asp.net identity 2.0

查看:24
本文介绍了获取在 asp.net identity 2.0 中分配角色的用户列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个列出角色的下拉列表框.我想获得具有该角色的用户列表.我的意思是具有管理员"角色或CanEdit"角色的用户列表.这是我的代码:

public IQueryableGetRolesToUsers([控制] 字符串 ddlRole){//ddlRole 返回角色Id,根据这个Id我想列出用户var _db = new ApplicationDbContext();IQueryable查询 = _db.Users;如果(ddlRole != null){//query = query.Where(e => e.Claims == ddlRole.Value);???????}返回查询;}

请帮忙.

更新代码(仍然错误)

public ListGetRolesToUsers([Control]string ddlRole){var 角色管理器 =new RoleManager(new RoleStore(new ApplicationDbContext()));var users = roleManager.FindByName("Administrator").Users.ToList();回访用户;}

错误:当 ItemType 设置为Microsoft.AspNet.Identity.EntityFramework.IdentityUser"时,选择方法必须返回IQueryable"或IEnumerable"或Microsoft.AspNet.Identity.EntityFramework.IdentityUser"之一.

我尝试了各种铸件,但都没有帮助.

更新(工作解决方案)

感谢 chris544,他的想法帮助我解决了这个问题.这是工作方法:-

public ListGetRolesToUsers([Control]string ddlRole){var context = new ApplicationDbContext();变量用户 =context.Users.Where(x => x.Roles.Select(y => y.RoleId).Contains(ddlRole)).ToList();回访用户;}

解决方案

不是专家,但...

Identity 中似乎没有为此内置功能,我也无法从内置角色中使用它(它似乎不适用于基于声明的 Identity).

所以我最终做了这样的事情:

var users = context.Users.Where(x => x.Roles.Select(y => y.Id).Contains(roleId)).ToList();

  • x.Roles.Select(y => y.Id) 获取 user x
  • 的所有角色 ID 的列表
  • .Contains(roleId) 检查此 id 列表是否包含必要的 roleId

I have a drop down list box which lists roles. I want to get the list of users having that role. I mean list of users that are in "Administrator" role or "CanEdit" role. Here is my code:

public IQueryable<Microsoft.AspNet.Identity.EntityFramework.IdentityUser> 
  GetRolesToUsers([Control] string ddlRole)
{    
  //ddlRole returns role Id, based on this Id I want to list users

  var _db = new ApplicationDbContext();
  IQueryable<Microsoft.AspNet.Identity.EntityFramework.IdentityUser> query = _db.Users;

  if (ddlRole != null)
  {
    //query = query.Where(e => e.Claims == ddlRole.Value);  ???????              
  }

  return query;
}

Please help.

Updated Code (still error)

public List<IdentityUserRole> GetRolesToUsers([Control]string ddlRole)
{

  var roleManager = 
   new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
  var users = roleManager.FindByName("Administrator").Users.ToList();
  return users;
}

Error: The Select Method must return one of "IQueryable" or "IEnumerable" or "Microsoft.AspNet.Identity.EntityFramework.IdentityUser" when ItemType is set to "Microsoft.AspNet.Identity.EntityFramework.IdentityUser".

I tried various castings but none of them helped.

UPDATE (working solution)

Thanks to chris544, his idea helped me to fix this. Here is working method:-

public List<ApplicationUser> GetRolesToUsers([Control]string ddlRole)
{
  var context = new ApplicationDbContext();
  var users =
    context.Users.Where(x => x.Roles.Select(y => y.RoleId).Contains(ddlRole)).ToList();

  return users;
}

解决方案

Not an expert, but ...

There seemed to be no built in funcionality for this in Identity and I could not get it work from built in Roles also (it seems to not work with claims based Identity).

So I ended up doing something like this:

var users = context.Users        
    .Where(x => x.Roles.Select(y => y.Id).Contains(roleId))
    .ToList();

  • x.Roles.Select(y => y.Id) gets a list of all role ids for user x
  • .Contains(roleId) checks if this list of ids contains necessary roleId

这篇关于获取在 asp.net identity 2.0 中分配角色的用户列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆