0

我正在使用 IdentityServer 4 实现一个简单的 oidc-client。关于两者如何协同工作的文档不多。无论如何,我找到了这篇文章:

https://damienbod.com/2019/01/29/securing-a-vue-js-app-using-openid-connect-code-flow-with-pkce-and-identityserver4/

我想登录我的用户,然后执行 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() 只是加载该信息(想象您在页面边界之间导航)。

但是,我无法获取用户的信息。我错过了什么?

4

0 回答 0