javascript - 未捕获错误 : n. onSuccess 不是函数 AWS Cognito

标签 javascript amazon-web-services aws-sdk amazon-cognito

当我尝试使用新密码设置经过身份验证的用户时,出现以下 javascript 错误,但我无法弄清楚它发生在哪里。一旦我调用我的注册函数,用户实际上就可以用新密码覆盖他们的临时密码,并且在 Cognito 控制台中一切看起来都很好。他们还可以使用新密码登录。

Uncaught Error: n.onSuccess is not a function      request.js?1405:31
  at Response.eval (eval at <anonymous> (app.js:1290), <anonymous>:17:14072)
  at Request.eval (eval at <anonymous> (app.js:1746), <anonymous>:355:18)
  at Request.callListeners (eval at <anonymous> (app.js:1056), <anonymous>:105:20)
  at Request.emit (eval at <anonymous> (app.js:1056), <anonymous>:77:10)
  at Request.emit (eval at <anonymous> (app.js:1746), <anonymous>:668:14)
  at Request.transition (eval at <anonymous> (app.js:1746), <anonymous>:22:10)
  at AcceptorStateMachine.runTo (eval at <anonymous> (app.js:1884), <anonymous>:14:12)
  at eval (eval at <anonymous> (app.js:1884), <anonymous>:26:10)
  at Request.eval (eval at <anonymous> (app.js:1746), <anonymous>:38:9)
  at Request.eval (eval at <anonymous> (app.js:1746), <anonymous>:670:12)

我的注册功能:

import {Config, CognitoIdentityCredentials} from 'aws-sdk'
import {CognitoUserPool, CognitoUser, AuthenticationDetails, CognitoUserAttribute} from 'amazon-cognito-identity-js'

import jwtDecode from 'jwt-decode'
import store from './store'

export default class CognitoAuth {

  register (username, email, pass, newPassword, cb) {
    let authenticationDetails = new AuthenticationDetails({
      Username: username,
      Password: pass
    })
    let cognitoUser = new CognitoUser({
      Username: username,
      Pool: this.userPool
    })

    cognitoUser.authenticateUser(authenticationDetails, {
      newPasswordRequired: (userAttributes, requiredAttributes) => {

        // the api doesn't accept this field back
        delete userAttributes.email_verified

        cognitoUser.completeNewPasswordChallenge(newPassword, userAttributes, this)
      }
    })
  }
}

注册.vue

signup () {
  this.$cognitoAuth.register(this.username, this.email, this.oldPass, this.newPass, (err, result) => {
    if (err) {
      this.error = true
      this.errMsg = err.message
      console.error(err)
    } else {
      console.log('Login Successful:', result)
      this.$router.replace(this.$route.query.redirect || '/search')
    }
  })
}

最佳答案

您缺少 onSuccess 回调实现,该回调在新 session 成功时调用。参见 CognitoUser.js 中的第 341 行.

例如:

.
.
.
cognitoUser.authenticateUser(authenticationDetails, {
    onSuccess: (result) => {
        // User authentication was successful.
    },

    onFailure: (err) => {
        // User authentication was not successful.
    },

    mfaRequired: (codeDeliveryDetails) => {
        // MFA is required to complete user authentication.
        // Get the code from user and call:
        cognitoUser.sendMFACode(mfaCode, this)
    },

    newPasswordRequired: (userAttributes, requiredAttributes) => {

        // the api doesn't accept this field back
        delete userAttributes.email_verified;

        cognitoUser.completeNewPasswordChallenge(newPassword, userAttributes, this);
    }
})
.
.
.

关于javascript - 未捕获错误 : n. onSuccess 不是函数 AWS Cognito,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43181579/

相关文章:

javascript - Polymer:使用不同 View 模型多次使用元素

javascript - 需要具有特定功能的日期/时间选择器

javascript - 使用 JSON 数据类型向来自 Ajax 的新数据添加新类

c# - TestWebACL 错误原因 : Your statement has multiple values set for a field that requires exactly one value

javascript - 哪个滑出面板与 bootstrap 3 兼容?

amazon-web-services - AWS : specify Lambda version for Cognito trigger

amazon-web-services - 在 Golang Fargate 任务中访问 DynamoDB

amazon-s3 - 异常 "The Content-MD5 you specified did not match what we received"

amazon-web-services - 使用 Nodejs Lambda 函数删除 AWS S3 对象

amazon-web-services - 如何加入 AWS DynamoDB 中的表?