Aws усиливают вход, регистрацию и подтверждают проблему рабочего процесса подписания - PullRequest
0 голосов
/ 15 апреля 2019

Я реализовал AWS-Amplify в угловом проекте, и он работает нормально, когда дело доходит до регистрации, входа в систему и подтверждения пользователя после регистрации, но у меня возникла проблема с потоком, и я пытаюсь найти прогулкуВообще-то, моя проблема в том, что при регистрации пользователя он будет перенаправлен на страницу подтверждения для ввода кода подтверждения, после отправки кода пользователь должен войти в систему, чтобы получить доступ к моему веб-сайту, поэтому я пытаюсь войти в систему пользователянепосредственно после успешной регистрации и подтверждения учетной записи, но не смог ее решить, вот мой код для регистрации:

onSubmitSignup(value: any) {
    const email = value.email, password = value.password;
    let attributes: {
        username,
        phone_number,
    };
    this.auth.signUp(email, password, attributes)
        .subscribe(
            result => {
                this.successfullySignup = true;
                this.router.navigate(['/pages/confirmRegistration', result.user.username]);
            },
            error => {
                console.log(error);
                this.errorMessage = error.message;
            });
}

и в моем сервисе аутентификации:

public signUp(email, password, userAttributes): Observable<any> {
    return fromPromise(Auth.signUp(email, password, userAttributes));
}

А воткод для подтверждения пользователя:

onSubmitConfirmation(value: any) {
    const email = this.email, confirmationCode = value.confirmationCode;
    this.auth.confirmSignUp(email, confirmationCode)
        .subscribe(
            result => {
                this.auth.signIn(this.email, this.password); //this what im trying to achieve is to have the user data from the sign in and sign up components here in the confirmation component 
            },
            error => {
                console.log(error);
                this.errorMessage = error.message;
            });
}

и сервис для этого:

public confirmSignUp(email, code): Observable<any> {
    return fromPromise(Auth.confirmSignUp(email, code));
}

мой метод входа в систему:

onSubmitLogin(value: any) {
  const email = value.email, password = value.password;
  this.auth.signIn(email, password)
    .subscribe(
      result => {
        this.router.navigate(['']);
      },
      error => {
        this.errorMessage = error.message;
        if (error.code === 'UserNotConfirmedException') {
          this.router.navigate(['/pages/confirmRegistration']);
        }
      });
}

и сервис длячто:

public signIn(email, password): Observable<any> {
    return fromPromise(Auth.signIn(email, password))
        .pipe(
            tap(() => this.loggedIn.next(true))
        );
}

Я думал о том, чтобы использовать имя пользователя и пароль в качестве общих данных для всех моих компонентов аутентификации, а затем использовать их, но подумал, что это не очень хорошая практика ине удалось реализовать его, поэтому, если вы можете предложить лучший подход, вы можете предложить это?Я думаю о передаче электронной почты и пароля, используя:

this.router.navigate(['/pages/confirmRegistration', result.user.username]);

, но это откроет пароль в URL, который я не считаю хорошей идеей, я не эксперт, но если это совет.

Я даже думал о наличии метода подтверждения в одних и тех же компонентах каждого входа и регистрации, но это будет дублировать код, но я мог бы получить доступ к необходимым полям для входа в систему после подтверждения пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...