簡體   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