[英]How to reset password of AWS Cognito user?
如果我在 AWS Cognito 中单击用户的“重置密码”按钮,它所做的只是重新发送验证 email,其中包含帐户注册 email 代码。
但是,如果用户使用该代码并在验证页面上输入它,AWS 会返回错误:
NotAuthorizedException: User cannot be confirmed. Current status is RESET_REQUIRED
首先,如何让 Cognito 发送真正的“密码重置”email 而不是“确认您的注册”email?
我认为它给了我这个错误,因为验证 JS 正在调用:
createCognitoUser(email).confirmRegistration(code, true, function confirmCallback(err, result)
而不是一些无证密码重置 function。 我应该打电话给什么 function?
你应该打电话给忘记密码。 来自使用 Amazon Cognito 用户身份池 Javascript 示例的 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);
}
});
所以即使我遇到了同样的问题,即使在 AWS cognito 文档中也不清楚,基本上这个过程涉及两个步骤。
下面我给出了一个 cognitoUserClass,它具有实现这两个步骤的 static 方法 forgotPassword() 和 confirmPassword() 方法。
import * as AmazonCognitoIdentity from 'amazon-cognito-identity-js'
class cognitoUserClass {
static cognitouser: AmazonCognitoIdentity.CognitoUser
static userPool = new AmazonCognitoIdentity.CognitoUserPool({
UserPoolId: 'your pool id',
ClientId: 'your client id',
})
static forgotPassword(userName: string): void {
const userData = {
Username: userName,
Pool: cognitoUserClass.userPool,
}
cognitoUserClass.cognitouser = new AmazonCognitoIdentity.CognitoUser(
userData
)
cognitoUserClass.cognitouser.forgotPassword({
onSuccess: (data) => {
console.log(data)
},
onFailure: (err) => {
console.log('ERR:', err)
},
})
}
static confirmPassword(
verificationCode: string,
newPassword: string
): void {
cognitoUserClass.cognitouser.confirmPassword(
verificationCode,
newPassword,
{
onFailure(err) {
console.log(err)
},
onSuccess(data) {
console.log(data)
},
}
)
}
}
export { cognitoUserClass }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.