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

Laravel自定义中间件出现ERR_TOO_MANY_REDIRECTS无限重定向问题

解决Laravel Breeze + Inertia自定义认证中间件导致的无限重定向问题

无限重定向的核心原因是自定义中间件逻辑完全搞反,且重定向目标就是当前受保护的路由,形成循环跳转:

  • 用户已登录(session存在user_data)访问/dashboard时,中间件强制重定向到RouteServiceProvider::HOME(即/dashboard)
  • 重定向后再次进入/dashboard,中间件重复触发相同重定向,陷入无限循环

修复步骤

  1. 修正中间件逻辑:中间件的作用是保护/dashboard,应拒绝未登录用户访问,而非已登录用户。正确逻辑为:session无user_data时重定向到登录页,已登录则允许继续访问。

修正后的CustomAuthMiddleware代码:

class CustomAuthMiddleware
{
    public function handle(Request $request, Closure $next)
    {
        // 未登录(无user_data)则跳转到登录页
        if (!session()->has('user_data')) {
            return redirect()->route('login');
        }

        // 已登录则允许访问后续路由
        return $next($request);
    }
}
  1. 确认路由分组合理性:当前/dashboard路由已被custom_auth中间件保护,无需在中间件中重复重定向到该路由。

额外注意事项

  • 确认RouteServiceProvider::HOME的定义与路由匹配,避免后续路由冲突
  • 若手动在登录/注册逻辑中设置user_data到session,需确保登录成功后该操作正确执行,否则中间件会一直判定用户未登录

内容的提问来源于stack exchange,提问作者mending3

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 02:50:24