Хорошо - дайте мне знать, если вам нужна дополнительная информация.Это немного отличается от большинства процессов забытых паролей в том, что они требуют кода, как вы упоминаете.Я думаю, что вас может сбить с толку то, что имя пользователя - это просто электронная почта пользователя (или то, что вы называете именем пользователя для своего пула пользователей Cognito).Это не идентификатор пользователя Cognito или что-то еще.
Я использую 4 ввода для получения всей необходимой информации и две формы.Вы можете легко использовать только одну форму.
Первый вход собирает электронную почту;Я поместил этот вклад в его собственную форму с инструкциями.Затем вы запускаете метод Auth.forgotPassword, указанный ниже (укажите входное значение электронной почты в качестве переменной имени пользователя).
AWS отправит код подтверждения вашему пользователю (если вы изменяете формат ваших сообщений вКонсоль Cognito; код будет использовать формат «код подтверждения», по крайней мере, для SMS-сообщений.)
Я думаю, что по умолчанию, если вы собрали номер телефона и предоставили его Cognito во время регистрации,Код должен идти на номер телефона пользователя, через SMS.Если нет, я бы предположил, что код отправляется на электронную почту пользователя, хотя я точно не знаю (у меня есть номер телефона пользователя в Cognito, и я никогда не получал этот код по электронной почте).
Остальные три ввода должны быть: код, пароль, подтвердить пароль.У меня есть эти три на второй форме.Пользователь вводит код в форму ввода кода, вводит новый пароль и проверяет новый пароль.
Вы берете электронную почту (из другой формы), код и пароль и используете Auth.Метод ForgotPasswordSubmit (введите значение ввода электронной почты снова в качестве имени пользователя, значение ввода кода в качестве кода и значение ввода пароля в качестве пароля).
Вам не нужно сообщение «data», возвращаемое любым из методов (я думаю,это просто строка с надписью «успех», если я правильно помню).
Если пользователь не находится в системе, метод Auth.forgotPassword вернет ошибку (что-то вроде «пользователь не найден»).
Ниже приведены подходящие методы (скопировано из документов ):
import { Auth } from 'aws-amplify';
Auth.forgotPassword(username)
.then(data => console.log(data))
.catch(err => console.log(err));
// Collect confirmation code and new password, then
Auth.forgotPasswordSubmit(username, code, new_password)
.then(data => console.log(data))
.catch(err => console.log(err));