2 回答

TA貢獻1871條經驗 獲得超8個贊
當您調用時,await userManager.UpdateAsync(user);
您正在更新用戶模型及其所有相關數據。您需要將新角色添加到現有角色列表中,而不是創建新的空列表并添加新記錄。

TA貢獻1831條經驗 獲得超10個贊
嘗試下面的代碼來添加新角色
private readonly ApplicationDbContext _context;
private readonly UserManager<ApplicationUser> _userManager;
private readonly RoleManager<IdentityRole> _roleManager;
public HomeController(ApplicationDbContext context
, UserManager<ApplicationUser> userManager
, RoleManager<IdentityRole> roleManager)
{
_context = context;
_userManager = userManager;
_roleManager = roleManager;
}
public async Task<IActionResult> CreateUserAndRole()
{
await _userManager.CreateAsync(new ApplicationUser { UserName = "[email protected]", Email = "[email protected]" });
await _roleManager.CreateAsync(new IdentityRole { Name = "Admin" });
await _roleManager.CreateAsync(new IdentityRole { Name = "Administrator" });
return Ok();
}
public async Task<IActionResult> AddAdminRoleToUser()
{
ApplicationUser user = _context.Users.FirstOrDefault(u => u.UserName == "[email protected]");
var role = await _roleManager.FindByNameAsync("Admin");
user.Roles.Add(new IdentityUserRole<string> { RoleId = role.Id, UserId = user.Id });
await _userManager.UpdateAsync(user);
return Ok();
}
public async Task<IActionResult> AddAdministratorRoleToUser()
{
ApplicationUser user = _context.Users.FirstOrDefault(u => u.UserName == "[email protected]");
var role = await _roleManager.FindByNameAsync("Administrator");
user.Roles.Add(new IdentityUserRole<string> { RoleId = role.Id, UserId = user.Id });
await _userManager.UpdateAsync(user);
return Ok();
}
- 2 回答
- 0 關注
- 276 瀏覽
添加回答
舉報