Какой правильный подход при использовании основного веб-API asp.net для предоставления регистрации администратора определенным пользователям.
Мои вопросы:
- Нужно ли самому создавать пользователя-администратора, а затем передавать учетные данные конкретному пользователю, который должен быть администратором?
- Должен ли я создать какой-то токен, который я даю отдельным пользователям, чтобы при входе в систему он вводил этот токен и позволял им стать администратором?
- Как мне лучше всего справиться с этим на маршруте регистрации / регистрации?
Или есть другой способ сделать это?
Я не задавал много вопросов по этой теме, относящихся к основным веб-API asp.net.
Мой текущий маршрут регистрации выглядит следующим образом
`[HttpPost("signup")]
public async Task<ActionResult> SignUp(UserViewModel user, CancellationToken ct = default(CancellationToken))
{
if(!ModelState.IsValid)
{
return BadRequest(ModelState);
}
User newUser = new User(){
UserName = user.Username,
Email = user.Email
};
var result = await _userManager.CreateAsync(newUser, user.Password);
if(!result.Succeeded)
{
return BadRequest(Errors.AddErrorsToModelState(result, ModelState));
}
UserViewModel userView = UserConverter.Convert(_userManager.Users.SingleOrDefault(u => u.UserName == user.Username));
ClaimsIdentity identity = await _getIdentity.GetClaimsIdentityForNewUser(userView.Username, userView.Password);
string refreshToken = Tokens.GenerateRefreshToken();
await _moviesPlaceSupervisor.SaveRefreshTokenAsync(userView, refreshToken);
string jwt = await Tokens.
GenerateJwt(identity,
_jwtFactory,
userView.Username,
_jwtOptions,
refreshToken,
new JsonSerializerSettings {
Formatting = Formatting.Indented
});
Response.Cookies.Append(
"token",
jwt,
new Microsoft.AspNetCore.Http.CookieOptions(){
HttpOnly = true,
SameSite = SameSiteMode.Strict,
Expires = DateTime.Now.AddDays(5)
}
);
return new OkObjectResult(jwt);`
Прямо сейчас, после регистрации у меня есть статический набор ролей и утверждений, которые я установил для нового пользователя с помощью вызова метода _getIdentity.GetClaimsIdentityForNewUser(userView.Username, userView.Password);
.