Почему мой пользователь AWS Congito может войти в систему, но "не аутентифицирован" при использовании Auth.currentAuthenticatedUser ()? - PullRequest
1 голос
/ 18 февраля 2020

Я вручную добавил пользователя AWS Cognito в пул пользователей моего приложения через консоль управления AWS. Требуемые учетные данные пула пользователей были подтверждены для этого пользователя. Я устанавливаю аутентификацию для контроля доступа к маршрутам. Всякий раз, когда я использую функцию Auth.signIn (), обещание успешно разрешается, однако при вызове Auth.currentAuthenticatedUser () после входа в систему обещание в функции canActivate () возвращает сообщение об ошибке «не аутентифицировано». Я прочитал проблемы GitHub на cookieStorage, вызывающие проблемы с этим, но не настроил это.

sign-in.component.ts

signIn(username, password) {

    return new Promise(() => {
        Auth
            .signIn(username, password)
            .then(() => {
                this.router.navigate(['main/dashboard']); // navigates to main/dashboard as expected
            })
            .catch(err => {
                this.authenticationError = err.message;
            })
    });
}

auth.guard.ts

canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
    return Auth
               .currentAuthenticatedUser()
               .then(() => { 
                   return true; 
               })
               .catch((err) => { 
                   this.router.navigate(['signin']);
                   console.log(err) // "not authenticated"
                   return false;
               });
}

1 Ответ

1 голос
/ 19 февраля 2020

Пользователи, созданные с помощью консоли управления AWS, не считаются аутентифицированными, если только для поля состояния этого пользователя не ПОДТВЕРЖДЕНО. Поле состояния в моем случае было FORCE_CHANGE_PASSWORD. AWS ожидает, что пользователи, созданные через консоль, изменят свой пароль после первого входа в систему или подтвердят свою учетную запись с помощью электронной почты или мобильного подтверждения. В случае с моим приложением я не хотел использовать ни электронную почту, ни мобильную проверку. Для решения этой проблемы я использовал следующую команду aws -cli для этого пользователя.

aws cognito-idp admin-set-user-password --user-pool-id your_user_pool_id --username username --password password --permanent
...