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

问题描述 投票:0回答:2

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

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

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

c# asp.net-core-identity asp.net-core-3.1
2个回答
1
投票

尝试一下:

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

0
投票

在角色控制器类中,您必须将RoleManager类的依赖项添加到构造方法。

RoleManager类用于管理身份中的角色,并具有一些重要的功能和属性。 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);
        }

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

userManager.AddToRoleAsync(AppUser user, string name)

userManager.RemoveFromRoleAsync(AppUser user, string name)

您可以阅读完整的小节here

© www.soinside.com 2019 - 2024. All rights reserved.