如何添加AuthController添加角色默认的IdentityCore

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

如何在注册用户期间使用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; }}
c# asp.net-core .net-core asp.net-identity
1个回答
1
投票

你可以检索你用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");
© www.soinside.com 2019 - 2024. All rights reserved.