如何重置 AWS Cognito 用户的密码?

如果我在 AWS Cognito 中为用户单击“重置密码”按钮,它所做的只是重新发送包含帐户注册电子邮件代码的验证电子邮件。

但是,如果用户获取该代码并将其输入到验证页面上,AWS 将返回错误:

NotAuthorizedException: User cannot be confirmed. Current status is RESET_REQUIRED

首先,如何让 Cognito 发送真正的“密码重置”电子邮件而不是“确认您的注册”电子邮件?

我认为它给了我这个错误,因为验证 JS 正在调用:

createCognitoUser(email).confirmRegistration(code, true, function confirmCallback(err, result)

而不是一些无证的密码重置功能。我应该调用什么函数?


FFIVE
浏览 367回答 2
2回答

四季花海

你应该打电话给forgotPassword。来自使用 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);    }});

Qyouu

所以即使我遇到了同样的问题,即使在 AWS cognito 文档中也不清楚,基本上这个过程包括两个步骤。调用 cognitoUser.forgotPassword() 这将启动忘记密码流程,用户将收到验证码。然后调用 cognitoUser.confirmPassword() 这将重置密码以验证发送到用户电子邮件的代码。下面我给出了一个 cognitoUserClass,它具有实现这两个步骤的静态方法 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 }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript