Как разрешить регистрацию / регистрацию администратора только определенным пользователям, использующим веб-интерфейс Asp.Net Core? - PullRequest
0 голосов
/ 23 марта 2019

Какой правильный подход при использовании основного веб-API asp.net для предоставления регистрации администратора определенным пользователям.

Мои вопросы:

  1. Нужно ли самому создавать пользователя-администратора, а затем передавать учетные данные конкретному пользователю, который должен быть администратором?
  2. Должен ли я создать какой-то токен, который я даю отдельным пользователям, чтобы при входе в систему он вводил этот токен и позволял им стать администратором?
  3. Как мне лучше всего справиться с этим на маршруте регистрации / регистрации?

Или есть другой способ сделать это?

Я не задавал много вопросов по этой теме, относящихся к основным веб-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);.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...