刷新后如何在nuxt auth中设置用户?

时间:2021-04-14 10:28:19

标签: javascript vue.js nuxt.js nuxt-auth

这是我的身份验证配置:

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 里面的 user 属性就被删除了。我想在页面刷新时再次设置它。如何在不为用户添加新 api 的情况下实现这一点?我已经尝试为此创建中间件,但它们适用于所有路由而不是指定的路由。我只需要简单的解决方案,例如从 localStorage 获取 jwt 令牌并从中获取 userId。

0 个答案:

没有答案