Я реализовал 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, который я не считаю хорошей идеей, я не эксперт, но если это совет.
Я даже думал о наличии метода подтверждения в одних и тех же компонентах каждого входа и регистрации, но это будет дублировать код, но я мог бы получить доступ к необходимым полям для входа в систему после подтверждения пользователя.