Nuxt Vuex Store Cookies Issue
一天中的好时光!
在我的项目进行了几周的开发之后,我决定从普通的Vue迁移到Nuxt。
主要是因为我需要SSR,尽管我知道Google可以执行页面上显示的JS,因此可以为其搜索机器人生成适当的内容。
另一个原因是项目开发的一般工作流程。我喜欢自动实例化路线,商店等的想法。
但是,当应用程序在
I \\'在商店中有一个帐户模块-
在旧版应用程序中,我只需使用以下代码
即可从cookie中获取令牌。
1 2 3 4 5 6 | import Cookies from 'js-cookie'; export const state = { user: null, token: Cookies.get('token') } |
通过执行以下突变,在成功认证后保存令牌:
1 2 3 4 5 6 7 | [types.ACCOUNT_SAVE_TOKEN] (state, { token, remember }) { state.token = token; Cookies.set('token', token, { expires: 365, httpOnly: true }); } |
但是在迁移到Nuxt.js之后,每次登录时,都会填充该状态中的令牌值,但未设置cookie,并且导航到项目内的另一页(它是pwa,所以没有重新加载等),令牌重置为null。
但是,如果将应用程序从
我已经阅读了github上的许多问题,并且在试图解决同一问题的网站上进行了大量的爬网,尽管没有建议对我有用。
我什至从NPM安装了cookie-universal-nuxt软件包,该软件包声称可以与SSR一起使用,但是每次我尝试在该状态或其他任何地方访问
至少在没有回到
P.S。在
好吧,经过大约12个小时的努力,我决定解决这个问题,我决定采用"肮脏"的方式来创建中间件,我认为该中间件正在对每个请求进行大量处理。 >
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | import CookieParser from 'cookieparser'; export default async function ({ store, req }) { if (!store.getters['account/check']) { if (!store.state.account.token) { if (process.server) { let requestCookies = CookieParser.parse(req.headers.cookie); if (requestCookies.hasOwnProperty('token')) { store.dispatch('account/saveToken', { token: requestCookies.token, remember: true }); } } } if (store.state.account.token) { if (!store.state.account.user) { try { await store.dispatch('account/fetchUser'); } catch (error) { } } } } return Promise.resolve(); } |