#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» добавьте имя пользователя нового пользователя вместе с токеном, который вы получили в качестве параметров запроса. На втором шаге найдите пользователя, а затем используйте менеджер пользователей, чтобы добавить пароль.