Nuxt路由守卫出现无限重定向问题,如何修改中间件代码?
解决Nuxt路由中间件无限重定向问题
你遇到的无限重定向问题,核心原因是中间件没有判断当前目标页面,导致不管用户访问哪个页面,都会强制触发跳转,进而形成循环——比如当authentication为true时,用户已经在/admin页面,中间件还是会再次跳转到/admin,反复触发逻辑。
修改后的代码如下:
import nuxtStorage from 'nuxt-storage'; export default defineNuxtRouteMiddleware((to) => { const authentication = nuxtStorage.localStorage.getData('authentication'); // 已认证但当前不是/admin页面时,跳转到后台 if (authentication === true && to.path !== '/admin') { return navigateTo('/admin'); } // 未认证但当前不是首页时,跳转到首页 if (authentication !== true && to.path !== '/') { return navigateTo('/'); } // 符合页面访问条件,直接放行 return; });
修改说明:
- 增加对目标页面
to.path的判断:只有当用户不在目标页面时才执行跳转,彻底避免重复触发中间件导致的循环 - 移除无用的
from和next参数:Nuxt 3的路由中间件推荐直接返回navigateTo做跳转,或者直接return放行路由,不需要调用next - 明确两种场景的跳转逻辑,同时保留路由放行分支,让符合条件的页面正常加载
内容的提问来源于stack exchange,提问作者safwan paloli
相关产品推荐
相关产品推荐

