如何在注册用户期间使用IdentityCore时添加默认角色:我的AuthController和使用类UserMenager和SignInManager,IConfiguration,我想在用户注册期间添加角色。我有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数据库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; }}
你可以检索你用User
创建的CreateAsync()
,然后使用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");