UserManager.RemoveFromRoles不删除角色

Jam*_*son 3 asp.net-mvc entity-framework

[HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult EditUser(AspNetUser UserToEdit, string[] roles)
        {
            AspNetUser CurrentUser = db.AspNetUsers.Find(User.Identity.GetUserId());
            AspNetUser UserBeingEdited = db.AspNetUsers.Find(UserToEdit.Id);

            string[] AllRoles = db.AspNetRoles.Select(s => s.Name).ToArray();
            UserManager.RemoveFromRoles(UserBeingEdited.Id, AllRoles);


            // Add all of the roles returned from the webpage
            if (roles.Count() > 0)
            {
                UserManager.AddToRoles(UserBeingEdited.Id, roles);
            }
        }
Run Code Online (Sandbox Code Playgroud)

运行此代码后,我检查用户,用户仍然拥有与之前相同的角色.roles是从我的编辑用户页面返回的角色列表,它已正确填充.

任何人都知道如何让这个工作?没有错误或任何东西.

Edi*_*vić 11

我认为问题在于您从所有可用角色中删除用户,而不是从用户拥有的角色中删除用户.

试试这个,

[HttpPost]
[ValidateAntiForgeryToken]
    public ActionResult EditUser(AspNetUser UserToEdit, string[] roles)
    {
        // Get user roles
        string[] allUserRoles = UserManager.GetRoles(UserToEdit.Id).ToArray();
        UserManager.RemoveFromRoles(UserToEdit.Id, allUserRoles);

        // Add all of the roles returned from the webpage
        if (roles.Count() > 0)
        {
            UserManager.AddToRoles(UserToEdit.Id, roles);
        }
    }
Run Code Online (Sandbox Code Playgroud)

  • 这确实解决了它,但我希望我能在测试许多不同的东西并得出相同的结论之前先阅读这里。:) 出于某种原因,如果列表包含他们不属于的角色,它不会删除 -any- 角色。当我提供他们拥有的角色列表时,它会很好地删除它们。 (2认同)