C# 如何添加AuthController添加角色默认标识核心
如何在注册用户期间使用IdentityCore时添加默认角色: 我的AuthController和Use类UserMenager和SignInManager,IConfiguration,我想在用户注册期间添加一个角色。我有3个模型负责用户和角色。一个用户可以有多个角色,但在这里他假设用户有一个角色,例如一个学生,一个角色可以有多个用户C# 如何添加AuthController添加角色默认标识核心,c#,asp.net-core,.net-core,asp.net-identity,C#,Asp.net Core,.net Core,Asp.net Identity,如何在注册用户期间使用IdentityCore时添加默认角色: 我的AuthController和Use类UserMenager和SignInManager,IConfiguration,我想在用户注册期间添加一个角色。我有3个模型负责用户和角色。一个用户可以有多个角色,但在这里他假设用户有一个角色,例如一个学生,一个角色可以有多个用户 [AllowAnonymous] [Route("api/[controller]")] [ApiController] public class AuthCo
[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);
}
[AllowAnonymous]
[路由(“api/[控制器]”)]
[ApiController]
公共类AuthController:ControllerBase
{
专用只读IConfiguration\u config;
专用只读IMapper\u映射器;
私有只读用户管理器_UserManager;
专用只读签名管理器\u签名管理器;
公共授权控制器(IConfiguration配置,
IMapper映射器,
用户管理器用户管理器,
SignInManager(签名管理员)
{
_userManager=userManager;
_signInManager=signInManager;
_映射器=映射器;
_config=config;
}
[HttpPost(“注册”)]
公共异步任务寄存器(UserForRegisterTo UserForRegisterTo)
{
var userToCreate=\u mapper.Map(userForRegisterDto);
var result=await\u userManager.CreateAsync(userToCreate,userForRegisterDto.Password);
var userToReturn=\u mapper.Map(userToCreate);
if(result.successed)
{
返回CreatedAtRoute(“GetUser”,
新建{controller=“Users”,id=userToCreate.id},userToReturn);
}
返回错误请求(result.Errors);
}
Modele数据库用户角色:
public class UserRole : IdentityUserRole<int>
{
public User User { get; set; }
public Role Role { get; set; }
}
public类用户角色:IdentityUserRole
{
公共用户{get;set;}
公共角色{get;set;}
}
模范角色:
public class Role : IdentityRole<int>
{
public ICollection<UserRole> UserRoles { get; set; }
}
公共类角色:IdentityRole
{
公共ICollection用户角色{get;set;}
}
模型用户
public class User : IdentityUser<int>
{ ...public ICollection<UserRole> UserRoles { get; set; }}
公共类用户:IdentityUser
{…公共ICollection用户角色{get;set;}}
您可以检索使用CreateAsync()
创建的用户
,然后使用:
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");