首页 > 解决方案 > 如何在 Quasar Vuex 模块中访问 ssrContext 和 Cookie?

问题描述

我正在 Quasar 中编写一个自定义 JWT 身份验证处理程序,我正在努力理解如何将参数传递到 Vuex 模块(或以任何其他方式访问它们)。理想情况下,我想创建一个 NPM 模块/插件,所以我需要找到一种方法来保持一切离散和模块化。

Quasar 文档说,当使用 SSR(我是)时,要访问 cookie,必须:

import { Cookies } from 'quasar'
const cookies = process.env.SERVER ? Cookies.parseSSR(ssrContext) : Cookies;

我正在尝试使用一些可以读取和写入浏览器 cookie 的身份验证例程编写一个模块(理想情况下是一个可以制成 npm 包的独立模块)。类似于以下内容:

// quasar-auth.js
import { Cookies } from 'quasar'
const cookies = process.env.SERVER ? Cookies.parseSSR(ssrContext) : Cookies;

export default {

  namespaced: true,

  state: {
    hello: 'world'
  },

  getters: {
    accessToken: (state, getters) => {
      cookies.get('cookie_name')
    }
  }
}

当然,以上不起作用,因为ssrContext不是来自任何地方。并将上面的内容转换为一个将getter和setter作为对象返回的函数似乎破坏了一切,所以我找不到传递ssrContext给模块的方法。

store/index.js看起来像这样:

// store/index.js
import Vue from 'vue'
import Vuex from 'vuex'
import { Auth } from 'quasar-auth' // my module

Vue.use(Vuex)

export default function ({ ssrContext }) {
  const Store = new Vuex.Store({
    modules: {
      Auth     // can ssrContext be passed here somewhere...?
    }
  })

  return Store
}

现在我们可以访问ssrContext,但我将如何将其传递给Auth

我真的不清楚我应该在哪里调用Cookies从 Quasar 导入,同时允许访问ssrContext和 Vuex 商店。我也尝试过将代码放在类星体boot文件中,但我只能得到我需要的部分。

任何帮助将非常感激。我对 Vuex 很陌生,如果我误解了一些明显的东西,我很抱歉。

标签: javascriptvue.jscookiesvuexquasar-framework

解决方案


推荐阅读