You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 15:36:03