我正在使用 IdentityServer 4 实现一个简单的 oidc-client。关于两者如何协同工作的文档不多。无论如何,我找到了这篇文章:
我想登录我的用户,然后执行 getUser(),以便我可以将用户的访问令牌保存在状态/本地存储中并将其提供给我的 httlClient authInterceptor(因此它对每个请求都使用该令牌)
问题是 getUser() 始终为空,即使在我登录后也是如此。
login () {
console.log('login hit!')
return userManager.signinRedirect()
}
getUser () {
console.log('getUser hit!')
userManager.getUser().then(function (user) {
console.log('user object is :')
console.log(user)
})
return userManager.getUser()
}
<template>
<div>
<b-button @click="handleLogin" id="login">Login</b-button>
</div>
</template>
<script>
import { createNamespacedHelpers, mapGetters } from 'vuex'
const { mapActions } = createNamespacedHelpers('auth')
export default {
name: 'Login',
methods: {
...mapActions(['authorize', 'login', 'getUser']),
...mapGetters(['user']),
async handleLogin () {
await this.login()
await this.getUser()
console.log('user in store is:')
console.log(this.user)
}
}
}
</script>
根据这条 github 消息链中的 brockallen: https ://github.com/IdentityModel/oidc-client-js/issues/182
一旦用户登录到您的 JS 应用程序,UserManager 就会存储有关用户的信息(个人资料、令牌等)。getUser() 只是加载该信息(想象您在页面边界之间导航)。
但是,我无法获取用户的信息。我错过了什么?