我在带有 Vue 路由器的 Nuxt.js 项目中遇到了一个奇怪的行为:我正在尝试使用放置在 route.js 插件中的路由守卫,它在 nuxt.config.js 插件部分中注册,看起来像这:
app.router.beforeEach((to, from, next) => {
to.name !== "login" && app.store.getters["session/token"] === ""
? next({ name: "login" })
: next();
});
这个想法是,如果用户刷新页面,他会丢失存储在 Vuex 会话模块中的令牌,因此他应该被重定向到登录页面。
奇怪的行为是——路由守卫实际上工作,它重定向到 /login url,但它显示 404 页面——如果我再次刷新页面,它正确地重定向到 /login url/页面。
我也尝试过直接推送到登录页面app.router.push({ name: "login" }),但无济于事。
我所做的解决方法是在 404 页面中添加重定向:
beforeCreate() {
this.$router.push({ name: "login" });
},
但我对此并不满意...
有谁知道发生了什么事?
慕斯王
繁星点点滴滴
相关分类