如何添加身份验证控制器添加角色默认身份核心



如何在注册用户期间使用IdentityCore时添加默认角色: 我的AuthController and Use class UserMenager and SignInManager, IConfigur, 我想在用户注册期间添加一个角色。我有 3 个模型负责用户和角色。一个用户可以有多个角色,但在这里他假设用户有一个角色,例如学生,一个角色可以有多个用户。

[AllowAnonymous]
[Route("api/[controller]")]
[ApiController]
public class AuthController : ControllerBase
{
private readonly IConfiguration _config;
private readonly IMapper _mapper;
private readonly UserManager<User> _userManager;
private readonly SignInManager<User> _signInManager;
public AuthController(IConfiguration config,
IMapper mapper,
UserManager<User> userManager,
SignInManager<User> signInManager)
{
_userManager = userManager;
_signInManager = signInManager;
_mapper = mapper;
_config = config;
}
[HttpPost("register")]
public async Task<IActionResult> Register(UserForRegisterDto userForRegisterDto)
{
var userToCreate = _mapper.Map<User>(userForRegisterDto);
var result = await _userManager.CreateAsync(userToCreate, userForRegisterDto.Password);
var userToReturn = _mapper.Map<UserForDetailedDto>(userToCreate);
if (result.Succeeded)
{
return CreatedAtRoute("GetUser", 
new { controller = "Users", id = userToCreate.Id }, userToReturn);
}
return BadRequest(result.Errors);
}

Modele database UserRole:

public class UserRole : IdentityUserRole<int>
{
public User User { get; set; }
public Role Role { get; set; }
}

模特角色:

public class Role : IdentityRole<int>
{
public ICollection<UserRole> UserRoles { get; set; }
}

模型用户

public class User : IdentityUser<int>
{ ...public ICollection<UserRole> UserRoles { get; set; }}

您可以检索使用CreateAsync()创建的User,然后使用UserManager.AddToRoleAsync()

var result = await _userManager.CreateAsync(userToCreate, userForRegisterDto.Password);
User newUser = _userManager.Users.First(x => x.Email == userForRegisterDto.Email);
var roleResult = await _userManager.AddToRoleAsync(newUser, "YourDefaultRoleName");