为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

FFIVE 2021-12-02 19:15:36
如果我在 AWS Cognito 中为用户单击“重置密码”按钮,它所做的只是重新发送包含帐户注册电子邮件代码的验证电子邮件。但是,如果用户获取该代码并将其输入到验证页面上,AWS 将返回错误:NotAuthorizedException: User cannot be confirmed. Current status is RESET_REQUIRED首先,如何让 Cognito 发送真正的“密码重置”电子邮件而不是“确认您的注册”电子邮件?我认为它给了我这个错误,因为验证 JS 正在调用:createCognitoUser(email).confirmRegistration(code, true, function confirmCallback(err, result)而不是一些无证的密码重置功能。我应该调用什么函数?
查看完整描述

2 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

你应该打电话给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);

    }

});


查看完整回答
反对 回复 2021-12-02
?
Qyouu

TA贡献1786条经验 获得超11个赞

所以即使我遇到了同样的问题,即使在 AWS cognito 文档中也不清楚,基本上这个过程包括两个步骤。

  1. 调用 cognitoUser.forgotPassword() 这将启动忘记密码流程,用户将收到验证码。

  2. 然后调用 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 }


查看完整回答
反对 回复 2021-12-02
  • 2 回答
  • 0 关注
  • 366 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信