AWS Amplify: функция забытого пароля с пользовательским интерфейсом - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь создать страницу входа, содержащую «Забыли пароль?»кнопка, которая открывает форму, которая позволяет пользователю отправить электронное письмо, которое одновременно является именем пользователя, и если эта запись существует в Cognito, необходимо запустить процесс сброса пароля.

Одна из проблем, с которыми я сталкиваюсьДо сих пор я не знал, как на самом деле получить соответствующее имя пользователя из Cognito, так как все логины электронной почты, похоже, получают назначенные уникальные хэши и не хранятся в виде обычного текста в Cognito.

Я посмотрел код ниже строки 1000 здесь, в документах , но это также предполагает, что у вас есть соответствующее имя пользователя и другие атрибуты.

(Регистрациядолжно быть возможно только администраторам, в настоящее время просто через консоль AWS).

Есть идеи, как это можно реализовать?Спасибо!

1 Ответ

0 голосов
/ 31 мая 2018

Хорошо - дайте мне знать, если вам нужна дополнительная информация.Это немного отличается от большинства процессов забытых паролей в том, что они требуют кода, как вы упоминаете.Я думаю, что вас может сбить с толку то, что имя пользователя - это просто электронная почта пользователя (или то, что вы называете именем пользователя для своего пула пользователей 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));
...