ASP MVC Identity 2使用户成为“用户”角色

时间:2018-11-29 14:59:10

标签: asp.net-mvc entity-framework asp.net-mvc-5 asp.net-identity

我添加用户并按以下代码分配角色,我首先使用ASP MVC 5身份和EF代码。

//some Code
                var result = manager.Create(insert, applicationUser.PasswordHash);
                IdentityResult result2 =null;
                if (result.Succeeded)
                {
                result2 = manager.AddToRole(insert.Id, "User");
}
//Some Code

因此,我需要在类似于“用户”角色的视图中显示具有自定义角色的用户列表。我写了这段代码:

    ApplicationDbContext myDbContext = new ApplicationDbContext();
    var getRoleId = myDbContext.Roles.Where(r => r.Name == "User").Select(m => m.Id).SingleOrDefault();
    var fetch = myDbContext.Users.Where(u => u.Roles.Any(r => r.RoleId.ToString() == getRoleId)).ToList();
    return View(fetch);

getRoleId的值是“ 4”,这是正确的,但是fetch总是等于0。我尝试了3个4个小时以上,但我没有得到结果。我的错在哪里?解决方案是什么? 谢谢。

更新: 我在添加角色时发现了问题,但我不知道该如何解决! 使用上述方法将用户添加到角色时,用户ID将添加到UserRoles表的UserId列中,但是还有第三列称为IdentityUser_Id,始终为空。

出于好奇,我也将用户ID也添加到了该列,现在一切正常。该应用程序承担了我的用户角色。

我对此的跟进问题是我可以自动设置IdentityUser_Id吗?使用类似于UserManager.AddToRole()的东西,将userId添加到两列?

1 个答案:

答案 0 :(得分:0)

为什么要获取getRowId而不按角色名称提取用户?尝试以下:

git commit -am "another commit"