我怎样才能remove/add一个角色from/to一个用户?

How can I remove/add a role from/to a user?

这就是我希望它的工作方式。 如何运作?

userManager.RemoveRole(oldAdminUser, "GroupAdmin");
userManager.RemoveRole(newAdminUser, "GroupUser");
userManager.AddRole(oldAdminUser, "GroupUser");
userManager.AddRole(newAdminUser, "GroupAdmin");

在上面的幻想示例中,两个用户交换角色。老admin变用户,老用户变admin

试试这个:

await userManager.RemoveFromRoleAsync(oldAdminUser, "GroupAdmin");
await userManager.RemoveFromRoleAsync(newAdminUser, "GroupUser");
await userManager.AddToRoleAsync(oldAdminUser, "GroupUser");
await userManager.AddToRoleAsync(newAdminUser, "GroupAdmin");

在角色控制器 class 中,您必须向构造函数添加 RoleManager class 的依赖项。

RoleManager class 用于管理身份中的角色,并具有一些重要的功能和属性。 role 是类型为 IdentityRole 的对象。

创建和删除角色示例:

        [HttpPost]
        public async Task<IActionResult> Create([Required]string name)
        {
            if (ModelState.IsValid)
            {
                IdentityResult result = await roleManager.CreateAsync(new IdentityRole(name));
                if (result.Succeeded)
                    return RedirectToAction("Index");
                else
                    Errors(result);
            }
            return View(name);
        }

        [HttpPost]
        public async Task<IActionResult> Delete(string id)
        {
            IdentityRole role = await roleManager.FindByIdAsync(id);
            if (role != null)
            {
                IdentityResult result = await roleManager.DeleteAsync(role);
                if (result.Succeeded)
                    return RedirectToAction("Index");
                else
                    Errors(result);
            }
            else
                ModelState.AddModelError("", "No role found");
            return View("Index", roleManager.Roles);
        }

那么您可以使用UserManagerclass以下成员来扮演角色:

userManager.AddToRoleAsync(AppUser user, string name)

userManager.RemoveFromRoleAsync(AppUser user, string name)

等等

您可以阅读完整文章here