我试图测试我是否只能在某些进程中输出中间件中的内容。但是,如果我使用以下代码 - process.server
似乎总能工作 - 当我直接通过浏览器进入路线时。其他输出仅在我通过路由器更改路径时可见。我在通用模式下使用Nuxt。那里发生了什么?
实际上我想从本地存储用户数据中提供商店,然后在此页面受到保护时重定向用户。这只能从定义了localStorage的process.client
完成。可以用中间件完成吗?还直接进入页面?
中间件/ test.vue
export default function (context) {
if (process.server) {
console.log('MIDDLEWARE SERVER')
}
if (!process.server) {
console.log('MIDDLEWARE NON-SERVER')
}
if (process.client) {
console.log('MIDDLEWARE CLIENT')
}
if (process.browser){
console.log('MIDDLEWARE BROWSER')
}
}
页/ test.vue
<template>
<h1>Some test Template</h1>
</template>
<script>
export default {
middleware: ['test']
}
</script>
答案 0 :(得分:0)
深入研究后,我找到了Nuxt团队成员的答案。显然,这是通用模式中的中间件的预期默认行为,仅在服务器上的页面刷新上运行。文件并不清楚。
在页面刷新方案中获取存储数据的唯一方法是使用这样的cookie。
//middleware/auth.js
export default function(context) {
context.store.dispatch("initAuth", context.req)
}
然后:
//store/index.js
actions: {
initAuth(vuexContext, req) {
if(req) {
if (!req.headers.cookie) {
return
}
// go get the cookie ;)
}
}
}