获取未登录的特定用户(不是当前用户)的所有角色

时间:2019-01-23 20:28:19

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

我正在尝试在ASP.NET Identity 2中编写一个基本的用户管理页面,我想获取用户的角色。但是,它不是当前用户,我只找到了如何获取当前用户的角色(User.Identity)。

我正在尝试通过给定的用户传递我通过的ID(这是他们从ASPNetUsers获得的ID),并获取他们具有的角色(数据库中哪个是Roles与ASPNetUserRoles的联接,但仅返回Roles表) )

我看不到加入此表的方法。

我无法使用的伪代码类似:

    var myRoles = await db.Roles.Where(s => s.Users.First(u => u.UserId == id)).ToListAsync();

有人知道在给定用户名的情况下如何编写查询以获取分配给它的所有角色吗?

1 个答案:

答案 0 :(得分:0)

我可以使用以下代码获取此信息:

List<IdentityUserRole> myRoles =db.Users.Where(s => s.Id == id).FirstOrDefault().Roles.ToList();

让我感到困惑的部分是它没有返回Role而是IdentityUserRole。

但是,我可以使用以下代码:

[HttpGet]
    public async Task<ActionResult> Roles(string id)
    {

        List<IdentityRole> allroles = db.Roles.ToList();


        var userrolemodel = new UserRoleViewModel()
        {
            AlllRoles = allroles,

            Id = id
        };
        return View(userrolemodel);

    }

然后

foreach (var org in Model.AlllRoles)
{
    var ischecked = Model.AlllRoles.First(s => s.Id == org.Id).Users.Any(s => s.UserId == Model.Id);
    <input type="checkbox" value="@org.Name" checked="@ischecked" name="orgs"/>
    @org.Name
    <br/>
}

效率不高,但很容易阅读。