Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何添加AuthController添加角色默认标识核心_C#_Asp.net Core_.net Core_Asp.net Identity - Fatal编程技术网

C# 如何添加AuthController添加角色默认标识核心

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

如何在注册用户期间使用IdentityCore时添加默认角色: 我的AuthController和Use类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);
    }
[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");