ASP.NET Удостоверение личности , двухэтапная регистрация

#c# #asp.net-core #asp.net-identity

Вопрос:

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

Проблема в том, что этот метод GenerateEmailConfirmationTokenAsync , который вызывается на 1-м шаге, ожидает уже существующего пользователя, которого на данный момент не существует, он будет создан на 2-м шаге.

Есть ли какой-нибудь другой доступный вариант ?

     [AllowAnonymous]
    [HttpPost("submit-registration-request")]
    [Consumes("application/json")]
    public async Task<ActionResult> _1stStepRegistration([FromBody] UserRegistrationModel request)
    {
        if (await _userManager.Users.AnyAsync(user => user.Email == request.Email)) return BadRequest();

        /// => throws value cannot be null exteion ?????????? 
        ///
        string token = await _userManager.GenerateEmailConfirmationTokenAsync(
            new IamUser
            {
                Email = request.Email,
                PhoneNumber = request.Phone,

                Account = request.Account,

                UserName = $"{request.FirstName}.{request.LastName}",
            });
 

Комментарии:

1. Вы могли бы выполнить двухэтапный процесс на одной странице, но используйте клиентские сценарии, чтобы создать впечатление, что это две отдельные страницы.

2. Я не уверен, как это сделать, не могли бы вы предоставить некоторые подробности или, может быть, если вы знаете, как это сделать, ссылку на какой-нибудь ресурс ? В настоящее время я использую приложение react с двумя формами, одна из которых-начальная форма, в которой я предоставляю базовую информацию о пользователе, и это делает запрос на действие, которое я представил, а 2-й компонент-это еще одна страница react, которая извлечет эту базовую информацию, предоставленную в 1-й форме, из некоторого URL-адреса и продолжит процесс регистрации

3. В поле «с какого-либо URL» добавьте имя пользователя нового пользователя вместе с токеном, который вы получили в качестве параметров запроса. На втором шаге найдите пользователя, а затем используйте менеджер пользователей, чтобы добавить пароль.