Nuxt 3全局导航守卫出现无限重定向问题求助
修复Nuxt全局路由中间件的无限重定向问题
问题根源
你的代码里第一个条件判断是触发无限重定向的核心原因:
if (to.name == 'id-create-issue' && from.name !== 'id-create-issue') { return navigateTo(to.path, { replace: true }) }
当从/auth/login跳转到/34/create-issue(对应路由名id-create-issue)时,这个条件会触发,返回跳转到当前目标路径的指令。路由系统会再次执行中间件,此时to.name仍为id-create-issue、from.name变为之前的跳转来源,条件再次成立,陷入无限循环,最终触发系统栈溢出保护。
修复方案
直接移除这个无意义的判断块即可——该逻辑既无权限验证作用,也无合理跳转需求,纯粹是循环诱因。
修正后的完整代码:
export default defineNuxtRouteMiddleware(async (to, from) => { let authStore = useAuthStore() let { isLoggedIn } = authStore const token = useCookie('token') // 已登录用户访问登录页,重定向到公司页 if (isLoggedIn && to.path === '/auth/login') { return navigateTo('/company') } // 未登录且访问非登录页,重定向到登录页 if (!token.value && to.path !== '/auth/login') { return navigateTo('/auth/login', { replace: true }) } })
额外注意
- 路由中间件仅在需要重定向或终止导航时返回值,正常放行无需返回任何内容
- 所有跳转逻辑必须设置明确终止条件,避免出现「跳转后再次触发相同跳转逻辑」的循环
内容的提问来源于stack exchange,提问作者Axlic
相关产品推荐
相关产品推荐

