#amazon-web-services #authentication #amazon-cognito #aws-amplify #amplifyjs
#amazon-web-services #аутентификация #amazon-cognito #aws-amplify #amplifyjs
Вопрос:
Обзор:
После того, как пользователь получает Проверочный код, пользователь вводит Проверочный код, и Account Status
становится CONFIRMED
. Теперь, когда процесс регистрации завершен, я хочу автоматически авторизовать пользователя после. Кажется неэффективным и избыточным перенаправлять пользователя на страницу входа, чтобы пользователь вводил свою информацию и входил в систему.
Возможные варианты:
- Используйте
email
иpassword
в процессе регистрации, а затем отправьтеsignIn
действие для входа пользователя. - Найдите способ комбинированного метода для обоих
confirmSignUp
иsignIn
, который был бы чем-то вродеconfirmSignUpAndSignIn
(если метод существует). Я просмотрел документы AWS и репозиторий Issues Amplify-js Github, но обнаружил, что у других была аналогичная дилемма без видимого решения. - Используйте AWS Amplify Hub (прослушиватель аутентификации), но при подтверждении регистрации пользователем не происходит никаких событий. Имело бы смысл,
confirmSignUp
чтобы вызвать событие, но этого не происходит. (Смотрите ниже)
Прослушиватель AWS Hub:
Я использую AWS Amplify Hub (прослушиватель аутентификации), и единственными событиями, которые генерируются, являются следующие из документов:
case 'signIn':
logger.error('user signed in'); //[ERROR] My-Logger - user signed in
break;
case 'signUp':
logger.error('user signed up');
break;
case 'signOut':
logger.error('user signed out');
break;
case 'signIn_failure':
logger.error('user sign in failed');
break;
case 'configured':
logger.error('the Auth module is configured');
Комментарии:
1. Вы просмотрели код компонента ConfirmSignUp ? В более поздних версиях пользователь автоматически входит в систему после подтверждения — найдите confirm()…
2. @LukasRossa Это работает для их библиотеки компонентов пользовательского интерфейса, их простые вызовы не позволяют автоматически регистрировать пользователя.
Ответ №1:
У меня была такая же проблема, после просмотра документов Amplify API и исходного кода я обнаружил, что простое решение является лучшим:
try {
// try to confirm the code
await Auth.confirmSignUp(formValues.email, formValues.confirmationCode);
// If successful, sign user in
await Auth.signIn({
username: formValues.email,
password: formValues.password,
});
} catch (error) {
console.log('error', error);
}
Ответ №2:
С помощью aws-amplify@4.3.29
этого можно добиться, включив autoSignIn
функцию и прослушивая события с помощью концентратора, подробности в этом выпуске github
Комментарии:
1. НАКОНЕЦ-ТО!!! Ожидание закончилось
Ответ №3:
Начиная с Amplify JS API версии 4.3.29, теперь это возможно. Просто включите autoSignIn
атрибут в метод регистрации.
Auth.signUp({
username: 'xxxxxx',
password: '*********,
attributes: {
email: 'xxxxxxxxxx'
},
autoSignIn: {
enabled: true
}
})
Решения для крайних случаев, такие как MFA, можно увидеть в ранее упомянутом выпуске GitHub