#javascript #reactjs #aws-amplify
#javascript #reactjs #aws-amplify
Вопрос:
Когда пользователь регистрируется с помощью withAuthenticator
компонента, он автоматически входит в систему после подтверждения своего адреса электронной почты. Возможно ли автоматически регистрировать их, используя пользовательский поток входа и Auth
объект? Как это можно сделать?
Ответ №1:
Недавно я столкнулся с проблемой, в которой я хотел использовать Storage
модуль Amplify, но для этого мне пришлось реализовать Auth
модуль. У меня был рабочий поток входа, и я не хотел, чтобы его нарушали, поэтому я использовал Auth
api для входа пользователей в AWS в фоновом режиме, одновременно подписывая их в мое приложение, используя мой исходный поток.
В документах описано, как программно зарегистрировать пользователя здесь: https://docs.amplify.aws/lib/auth/emailpassword/q/platform/js
Реализовать JS-код не так уж сложно
import { Auth } from 'aws-amplify';
async function signIn() {
try {
const user = await Auth.signIn(username, password);
} catch (error) {
console.log('error signing in', error);
}
}
Я внедрил триггер предварительной регистрации lambda для автоматического подтверждения пользователей, их электронной почты и т. Д. Я не хотел, чтобы этот поток авторизации прерывал мой существующий поток. Этот метод описан здесь:
https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-pre-sign-up.html#aws-lambda-triggers-pre-registration-example-2
Вот заметки, которые я делал во время работы, на случай, если это поможет вам получить больше контекста. Извините, если они сбивают с толку, на самом деле они предназначены только для чтения: https://www.evernote.com/shard/s713/sh/ccf96dcc-b51e-9963-5207-ac410b02a13a/0bcdb4bc85ea8a31b7f5621a6812c837
Ответ №2:
Начиная с Amplify JS API версии 4.3.29, теперь это возможно. Просто включите autoSignIn
атрибут в метод регистрации.
Auth.signUp({
username: 'xxxxxx',
password: '*********,
attributes: {
email: 'xxxxxxxxxx'
},
autoSignIn: {
enabled: true
}
})