Интеграция с Amplify JS и Cognito в React - PullRequest
1 голос
/ 25 июня 2019

Я пробовал Аутентификацию с использованием Amplify JS и смог войти в систему и сменить пароль, когда user.challengeName === 'NEW_PASSWORD_REQUIRED' и у меня componentDidMount() в моем Approuter, где находятся все маршруты сайта. при навигации для смены пароля экран componentDidMount() не вызывается.

состояние при входе в систему:

 if (user.challengeName === 'NEW_PASSWORD_REQUIRED') {

     this.props.history.push('/ChangePassword')}

В Approuter:

async componentDidMount() {

    try {
      const session = await Auth.currentSession();
      this.setAuthStatus(true);
      console.log(session);
      const user = await Auth.currentAuthenticatedUser();debugger;
      this.setUser(user);
    } catch(error) {
      if (error !== 'No current user') {
        console.log(error);
      }
    }

сменить пароль:

  let user =  Auth.currentAuthenticatedUser();

  Auth.changePassword(
        user, 
        values.tempPassword,              
        values.newPassword

      ).then(user => {
        // at this time the user is logged in if no MFA required
        console.log(user);
      }).catch(e => {
        console.log(e);
      });

Ожидаемый:

  1. Пользователь должен быть объектом Cognito, а изменение пароля должно обновить и подтвердить пользователя.

Фактический:

User.session () не является функцией.

1 Ответ

0 голосов
/ 25 июня 2019

У меня есть образец в Angular (может быть тот же код для React):

cognitoUser.authenticateUser(authenticationDetails, {
    onSuccess: result => {
        console.log(err);
        ...
    },
    onFailure: err => {
      console.log(err);
      ...
    },
    newPasswordRequired: (userAttributes, requiredAttributes) => {
      subscriber.error({
        reason: 'FORCE_CHANGE_PASSWORD',
        user: {
          username: user
        }
      });
    }
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...