当前位置: 首页 > 知识库问答 >
问题:

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

吴品
2023-03-14

如果我在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个答案

韦辰钊
2023-03-14

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

  1. 打电话给cognitoUser。forgotPassword()这将启动忘记密码处理流程,用户将收到一个验证码
  2. 然后打电话给cognitoUser。confirmPassword()将重置密码,以验证发送到用户电子邮件的代码

下面我给出了一个认知用户类,它有静态方法forgetPassword()和确认密码()方法来实现这两个步骤。

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 }
翟善
2023-03-14

你应该打电话忘记密码。从AWS文档中使用Amazon Cognito用户标识池的Javascript示例:

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);
    }
});
 类似资料:
  • 我们用的是Cognito。一切都很好。我使用AdminCreateUser API添加了一个用户,他们收到了临时密码。不幸的是,他们等待了一个多月才登录,现在当他们尝试使用临时密码登录时,Cognito返回以下错误: 我该怎么做呢?我在Cognito UI中没有看到任何重置按钮。是否有我可以调用的CLI或API?

  • 所以在我的应用程序中,我显然想为用户提供重置密码的方法。我遇到的问题是,用户池的新留档在这个主题上非常模糊。以下是他们告诉你忘记密码流要做的事情,你可以在以下链接找到: http://docs.aws.amazon.com/cognito/latest/developerguide/using-amazon-cognito-user-identity-pools-javascript-exampl

  • 我想对我的Keycloak服务器进行rest调用。 根据doc的说法,这应该很简单:https://www.keycloak.org/docs-api/10.0/rest-api/index.html#_ExecuteActionSemail 所以在我开始编码之前,我想准备邮递员呼叫,所以我的url是

  • 我有用户表,其中包含用户及其角色的信息,所以这里唯一的是“电子邮件”、“role_id”、“电话”组合在一起,所以电子邮件可以复制,但如果role_id和电话号码被复制,就不能复制,这是因为用户可以客户,这意味着role_id=1,或者他有商业账户,这意味着role_id=2,但是如果这个客户需要重置他的客户密码,或者他的商业账户密码呢?我该怎么做呢? 桌子

  • 试图通过管理员更改我的数据库密码。在尝试登录时突然更新密码不起作用。如何重置管理员数据库密码。

  • 本文向大家介绍CentOS7如何重置root密码的方法,包括了CentOS7如何重置root密码的方法的使用技巧和注意事项,需要的朋友参考一下 搬砖过程中杂七杂八的环境和配置问题,每次总能碰到不一样的错误。Google一下发现别人能解决的方法不一定适合你。这次我遇到问题的环境是: Windows 10 企业版 2016 LTS VMware® Workstation 14 Pro 14.1.0 b