Я пробовал Аутентификацию с использованием 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);
});
Ожидаемый:
- Пользователь должен быть объектом Cognito, а изменение пароля должно обновить и подтвердить пользователя.
Фактический:
User.session () не является функцией.