UserManager.RemoveFromRoles不删除角色

时间:2016-02-16 17:37:27

标签: 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);
            }
        }

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

任何人都知道如何让它发挥作用?没有错误或任何东西。

1 个答案:

答案 0 :(得分:9)

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

试试这个,

[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);
        }
    }