如何使用 Asp Dot Net Core Identity 将用户分配给角色

How to assign a user to a role using Asp Dot Net Core Identity

我想将用户分配给 AspNetUserRoles table 中的角色。但是我不知道我的错误是什么。

1.The(字符串 id)是我要为其分配角色的用户的 ID。

  1. 我试过使用“版主”角色的 ID,但还是不行。

P.S。这不是在创建帐户时,只是想说明一下。

这是我的代码:

public async Task<IActionResult> MakeModerator(string id)
    {

        var roles = _context.Roles.ToList();

       var roleId = _context.UserRoles.Where(u => u.UserId == id).Select(r => r.RoleId).SingleOrDefault();

       var userRole = roles.Where(r => r.Id == roleId).Select(n => n.Name).SingleOrDefault();

         var userToadd = new ShuttersIncUser { UserName = id };


        if (userRole != "Moderator" && userRole != "Admin")
        {
           await _userManager.AddToRoleAsync(userToadd, "Moderator");
           _context.SaveChanges();
        }
        else
        {

        }

        return RedirectToAction("AllUsers");
    }

首先需要获取用户Id或用户名,然后分配角色。

var userToadd = _userManager.FindByIdAsync(id); or 
var userToadd = _userManager.FindByNameAsync(id);

无需使用 _context.SaveChanges 。您还可以在控制器中注入 RoleManager _roleManager,然后使用 _roleManager 获取角色,而不是使用 _context