Аутентификация AWS Cognito не работает должным образом - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь следовать документам для аутентификации пользователя через мою форму входа.Вариант использования 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())
  }
})

1 Ответ

0 голосов
/ 17 января 2019

В dashboard.vue вы создаете новый пользовательский экземпляр, этот пользователь не аутентифицирован. Попробуйте getUserAttributes сразу после autheticateUser.

Причина в том, что когда вы вызываете authenticateUser, после успеха некоторые свойства присваиваются экземпляру вызывающего пользователя, токену, подписи и т. Д. ...

Затем, когда вы вызываете другой метод, такой же, как getUserAttributes, он использует эту информацию.

Ваш код в dashboard.vue завершается ошибкой, потому что в момент вызова метода пользователь экземпляр не аутентифицирован, так как вы можете прочитать сообщение об ошибке.

Вам необходимо аутентифицировать ВСЕ пользовательские инстансы.

...