如何从用户中删除角色或向用户添加角色?

时间:2020-04-26 13:10:33

标签: c# asp.net-core-identity asp.net-core-3.1

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

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

在上面的幻想示例中,两个用户交换角色。旧管理员成为用户,旧用户成为管理员。

2 个答案:

答案 0 :(得分:1)

尝试一下:

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

答案 1 :(得分:0)

在Role Controller类中,必须将RoleManager类的依赖项添加到构造函数。

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

创建和删除角色的示例:

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

然后,您可以使用UserManager类的以下成员来扮演角色:

userManager.AddToRoleAsync(AppUser user, string name)

userManager.RemoveFromRoleAsync(AppUser user, string name)

您可以阅读完整的here