我正在尝试遵循docs通过我的登录表单对用户进行身份验证。用例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())
}
})
答案 0 :(得分:0)
在dashboard.vue中,您正在创建一个未通过身份验证的新用户实例。尝试在autheticateUser之后尝试getUserAttributes。
原因是,当您调用authenticateUser时,成功后,一些属性将被设置到调用用户实例,令牌,签名等...
然后,当您调用另一个方法(如getUserAttributes)时,它将使用该信息。
您在dashboard.vue中的代码失败,因为在您调用该方法时,未验证用户实例,因为您可以从错误消息中进行读取。
您需要验证所有用户实例。