繁体   English   中英

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

[英]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 文档中也不清楚,基本上这个过程涉及两个步骤。

  1. 调用 cognitoUser.forgotPassword() 这将启动忘记密码流程,用户将收到验证码。
  2. 然后调用 cognitoUser.confirmPassword() 将重置密码,验证发送给用户 email 的代码。

下面我给出了一个 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM