[英]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 文檔中也不清楚,基本上這個過程涉及兩個步驟。
下面我給出了一個 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.