为什么Nuxt中间件在页面跳转后不执行?
我在Nuxt3项目里写了权限校验中间件,但页面跳转到其他页面后中间件就失效了。比如从首页跳转到用户中心时,控制台没有输出中间件的日志。
中间件代码是这样写的:
export default defineNuxtMiddleware(async ({ route }) => {
console.log('中间件执行了?'); // 这个日志只有首页能打出
if (!localStorage.getItem('token')) {
return navigateTo('/login');
}
});
我在页面用async setup()里用this.$router.push('/user')跳转,但目标页面完全不触发中间件。已经确认中间件在nuxt.config.ts里全局注册了,也试过直接写在页面里都不行,求大神指点
改用navigateTo('/user')跳转就对了,这个方法会正常触发中间件。要是非得用router.push,那中间件就形同虚设,相当于直接绕过路由守卫了。
代码放这了:
要是用ts还提示找不到方法,就加个@nuxtjs/composition-api的依赖。中间件那边保持原样没问题,主要是跳转方式要改。