Как войти в систему пользователя после регистрации с помощью AWS Amplify и React

#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
  }
})