簡體   English   中英

AWS Cognito身份驗證未按預期工作

[英]AWS Cognito Authentication Not Working as Expected

我正在嘗試按照文檔通過我的登錄表單對用戶進行身份驗證。 用例4說這是用於驗證用戶的身份,但是我仍然收到用戶未驗證的錯誤,因此感到困惑。

我可以成功調用authenticateUser函數並獲取令牌,然后重定向到另一個頁面,但是當該頁面調用getUserAttributes時,我收到用戶未登錄的錯誤。

login.vue

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)
    }
  })

dashboard.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())
  }
})

在dashboard.vue中,您正在創建一個未通過身份驗證的新用戶實例。 在autheticateUser之后嘗試嘗試getUserAttributes。

原因是,當您調用authenticateUser時,成功后,一些屬性將被設置到調用用戶實例,令牌,簽名等。

然后,當您調用另一個方法(如getUserAttributes)時,它將使用該信息。

您在dashboard.vue中的代碼失敗,因為在您調用該方法時,未對用戶實例進行身份驗證,因為您可以從錯誤消息中讀取內容。

您需要驗證所有用戶實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM