1

这是我的身份验证配置:

auth: {
    strategies: {
      local: {
        scheme: 'refresh',
        token: {
          property: 'jwtToken',
        },
        refreshToken: {
          property: 'refreshToken',
          data: 'refreshToken',
        },
        user: false,
        endpoints: {
          login: { url: '/api/account/authenticate', method: 'post' },
          logout: { url: '/api/account/logout', method: 'post' },
          refresh: { url: '/api/account/refresh-token', method: 'post' },
          user: false,
        },
      },
    },
  },

这是我对身份验证的商店操作:

async login({ commit }, data) {
    try {
      const {
        data: { jwtToken, refreshToken },
      } = await this.$auth.loginWith('local', { data })
      await this.$auth.setUserToken(jwtToken, refreshToken)

      const decodedJwt = jwtDecode(jwtToken)
      this.$auth.setUser({ userId: decodedJwt.sub })

      await this.$router.push('/dashboard')
    } catch (e) {
      this.$n?.myError()
    }
  },
  async logout() {
    const refreshToken = localStorage.getItem('auth._refresh_token.local')
    await this.$auth.logout({ data: { refreshToken } })
  },

当然,刷新后 $auth 中的用户属性会被删除。我想在页面刷新时再次设置它。如何在不为用户添加新 API 的情况下实现这一点?我已经尝试为此创建中间件,但它们适用于所有路由而不是指定路由。我只需要简单的解决方案,例如从 localStorage 获取 jwt 令牌并从中获取 userId。

4

0 回答 0