我正在尝试允许我的用户在我的Javascript swebsite中为他们的Cognito用户池帐户查看忘记密码流。
由于用户池处于测试阶段,因此缺少一些文档,在这种情况下很奇怪。 AWS声称以下代码应该声明:
为未经身份验证的用户启动并完成忘记的密码流。
代码为:
cognitoUser.forgotPassword({
onSuccess: function (result) {
console.log('call result: ' + result);
},
onFailure: function(err) {
alert(err);
},
inputVerificationCode() {
var verificationCode = prompt('Please input verification code ' ,'');
var newPassword = prompt('Enter new password ' ,'');
cognitoUser.confirmPassword(verificationCode, newPassword, this);
}
});
任何人都可以理解这段代码,或者至少确认/否认它看似荒谬吗?
答案 0 :(得分:1)
示例中提示的内容确实有点奇怪。你可能想要以不同的方式做到这一点。实际上,您可以在启动forgotPassword进程后从localstorage获取当前的cognitoUser,然后再调用cognitoUser.confirmPassword
来单独调用confirmPassword。您可以像这样获得当前的cognitoUser:
var data = { UserPoolId : 'us-east-1_Iqc12345', // Your UserPoolId
ClientId : '12345du353sm7khjj1q' // Your client ID
};
var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(data);
var cognitoUser = userPool.getCurrentUser();
然后你可以打电话
cognitoUser.confirmPassword(verificationCode, newPassword, {
onSuccess: function(result){
// Do stuff on success
},
onFailure: function(err){
// Do stuff on error
}
});
答案 1 :(得分:0)
该示例应该有效。它适用于未经身份验证的确认用户,因此一旦设置了池和用户名数据,您就可以运行该示例。 forgotPassword函数在失败,成功或请求新密码和验证码信息时调用相关的回调。
var poolData = {
UserPoolId : 'YOUR_USER_POOL_ID',
ClientId : 'YOUR_APP_ID'
};
var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData);
var userData = {
Username : 'YOUR_USER_NAME',
Pool : userPool
};
var cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData);
cognitoUser.forgotPassword({
onSuccess: function (result) {
console.log('call result: ' + result);
},
onFailure: function(err) {
alert(err);
},
inputVerificationCode() {
var verificationCode = prompt('Please input verification code ' ,'');
var newPassword = prompt('Enter new password ' ,'');
cognitoUser.confirmPassword(verificationCode, newPassword, this);
}
});
什么是没有意义的部分,以便我们可以在公开测试版之后改进文档?流量是否不正确或缺少某些信息?