【发布时间】:2017-09-27 08:47:39
【问题描述】:
我在 Cognito 中点击了“重置密码”,现在登录时收到“PasswordResetRequiredException”,我该如何处理?我在文档中找不到任何可以告诉我该怎么做的内容?
【问题讨论】:
标签: javascript amazon-web-services amazon-cognito
我在 Cognito 中点击了“重置密码”,现在登录时收到“PasswordResetRequiredException”,我该如何处理?我在文档中找不到任何可以告诉我该怎么做的内容?
【问题讨论】:
标签: javascript amazon-web-services amazon-cognito
你需要调用 ForgotPassword()...
【讨论】:
我想出了在 (onFailure) 回调中处理此问题的确切方法:
// Create a cognito user instance
const cognitoUser = new AmazonCognitoIdentity.CognitoUser(userData);
// Trigger to authenticate the user
cognitoUser.authenticateUser(authenticationDetails, {
onFailure: function(err) {
if (err.code == "PasswordResetRequiredException") {
// Confirm user data
cognitoUser.confirmPassword(
"", // Put your verification code here
"", // Here is your new password
{
onSuccess: result => {
// Everything worked as expected
},
onFailure: err => {
// Trigger failure
}
}
);
} else {
// Trigger failure
}
}
});
【讨论】:
我认为特定用户应该收到电子邮件或短信发送给他们(如果他们的电子邮件或电话号码已经过验证)。在这封电子邮件中应该有一个可以与 ConfirmForgotPassword 一起使用的代码
【讨论】:
您必须为 authenticateUser 实现 newPasswordRequired 回调,如下所示:
cognitoUser.authenticateUser(authenticationDetails, {
onSuccess: function (result) {
// User authentication was successful
},
onFailure: function(err) {
// User authentication was not successful
},
mfaRequired: function(codeDeliveryDetails) {
// MFA is required to complete user authentication.
// Get the code from user and call
cognitoUser.sendMFACode(mfaCode, this)
},
newPasswordRequired: function(userAttributes, requiredAttributes) {
// User was signed up by an admin and must provide new
// password and required attributes, if any, to complete
// authentication.
// the api doesn't accept this field back
delete userAttributes.email_verified;
// Get these details and call
cognitoUser.completeNewPasswordChallenge(newPassword, userAttributes, this);
}
});
【讨论】: