gpt4 book ai didi

javascript - Amazon Cognito newPasswordRequired 等待页面加载

转载 作者:行者123 更新时间:2023-11-30 21:10:19 25 4
gpt4 key购买 nike

我正在我的 Web 应用程序中实现 Amazon Cognito 用户池身份验证,我遇到了这个问题 - 如何将 newPasswordRequired 回调中的用户重定向到“/new-password”并等待输入?

所以换句话说,我的预期流程是用户使用临时密码登录(这里我触发 cognitoUser.authenitcateUser),之后我将用户重定向到“/new-password”路由,用户看到新密码形式(newPasswordRequired 回调)在这里触发)。

现在的问题是 SDK 希望我在 newPassword 回调中传递密码,但我还不知道它们(因为用户将以新密码形式输入)。

代码:

async login(values) {
const details = {
Username: values.username,
Password: values.password,
};

const authDetails = new AuthenticationDetails(details);
const userData = {
Username: details.Username,
Pool: poolData,
};

const cognitoUser = await new CognitoUser(userData);
await cognitoUser.authenticateUser(authDetails, {
onSuccess: (result) => {
console.log(userData);
axios.defaults.headers.common.Authorization = result.getIdToken().getJwtToken();
browserHistory.push('/entities');
},
onFailure: (error) => {
console.log(userData);
throw new Error(error);
},
newPasswordRequired: () => {
browserHistory.push('/new-password');
console.log(cognitoUser);
console.log(cognitoUser.getAuthenticationFlowType(), 'YOU NEED TO CHANGE PASSWORD');
const userData = {
Username: cognitoUser.username,
Pool: poolData,
};
cognitoUser.completeNewPasswordChallenge(
values.newPassword,
{},
{
onSuccess: (user) => {
console.log('success', user);
},
onFailure: (error) => {
console.log(error);
},
},
);
},
});

我尝试的另一件事是创建单独的方法,该方法负责调用 cognitoUser.completeNewPasswordChallenge,但随后用户池认为我未通过身份验证。

我的 React 组件如下所示:

<form onSubmit={this.props.handleSubmit(AWSApi.login.bind(this))}></form>

最佳答案

您需要 cognitoUser.Session 才能在重定向后调用 cognitoUser.completeNewPasswordChallenge。您可以在本地存储中保留 cognitoUser.Session 或在重定向前设置为获取参数 (yoururl?session=cognitoUser.Session)。然后在新页面中,您可以创建新的 cognitoUser 并设置您的旧响应 session 。

例如:

var userPool = new AmazonCognitoIdentity.CognitoUserPool(POOL_DATA);
var userData = {
Username: username,
Pool: userPool
};

var cognitoUser = new AmazonCognitoIdentity.CognitoUser(userData);
cognitoUser.Session = <your saved session>
cognitoUser.completeNewPasswordChallenge(....

关于javascript - Amazon Cognito newPasswordRequired 等待页面加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46215374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com