代码之家  ›  专栏  ›  技术社区  ›  Catfish

aws cognito身份验证未按预期工作

  •  0
  • Catfish  · 技术社区  · 7 年前

    我正试着跟着 docs 用于通过我的登录表单验证用户。用例4说它是用来认证用户的,但是我仍然得到一个错误,我的用户是未经认证的,所以我很困惑。

    我可以成功地 authenticateUser 函数并获取一个令牌并重定向到另一个页面,但是当该页面调用 getUserAttributes 我得到用户未登录的错误。

    Login

    const userPool = new CognitoUserPool(cognitoConfig)
    
      const authenticationData = {
        Username: this.username,
        Password: this.password
      }
    
      const authenticationDetails = new AuthenticationDetails(authenticationData)
    
      const userData = {
        Username: this.username,
        Pool: userPool
      }
      const user = new CognitoUser(userData)
      const self = this
    
      user.authenticateUser(authenticationDetails, {
        onSuccess: result => {
          const token = result.getAccessToken().getJwtToken()
          console.log('token = ', token)
          self.$store.commit('user/SET_USERNAME', self.username)
          self.$router.push('/dashboard')
        },
        onFailure: err => {
          console.log('err = ', err)
        }
      })
    

    仪表板.vue

    const userPool = new CognitoUserPool(cognitoConfig)
    const userData = {
      Username: this.user.username,
      Pool: userPool
    }
    
    console.log('userData = ', userData)
    
    const user = new CognitoUser(userData)
    user.getUserAttributes((err, result) => {
      if (err) {
        console.log('getUserAttributes err = ', err)
        alert(err.message || JSON.stringify(err))
        return
      }
      for (let i = 0; i < result.length; i++) {
        console.log('attribute ' + result[i].getName() + ' has value ' + result[i].getValue())
      }
    })
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Raydel Miranda    7 年前

    在dashboard.vue中,您正在创建一个新的用户实例,该用户未通过身份验证。在authenticateuser之后尝试getuserattributes。

    原因是,当您调用authenticateuser时,在成功之后,一些属性将被设置为调用用户实例、令牌、签名等。

    然后当您调用另一个方法时,就像getuserattributes一样,它使用该信息。

    dashboard.vue中的代码失败,因为在调用方法时,用户 实例 无法验证,因为您可以从错误消息中读取。

    您需要验证所有用户实例。