Laravel 10+Breeze+Sanctum登录后重定向循环问题求助
Laravel 10+Breeze+Sanctum登录后重定向排查方向
路由与中间件配置检查
- 打开
routes/web.php,确认首页路由没有错误应用guest中间件(误加会导致已登录用户被强制重定向),同时确保需登录访问的路由正确绑定auth中间件。 - 检查
app/Http/Kernel.php的web中间组,确认包含StartSession、AuthenticateSession、VerifyCsrfToken核心中间件,且StartSession必须排在Authenticate之前——否则会话未启动就执行认证判断,会导致已登录状态无法被识别。
- 打开
会话配置验证
- 查看
config/session.php:domain字段需与当前应用域名完全匹配(本地开发填localhost或localhost:8000,不可留空);secure字段在本地HTTP环境下必须设为false,HTTPS生产环境才设为true,否则浏览器会拒绝保存会话Cookie;same_site建议设为'lax',避免严格跨域策略阻止Cookie传递。
- 查看
Breeze认证逻辑核对
- 打开
app/Http/Controllers/Auth/AuthenticatedSessionController.php的store方法,确认登录成功后的重定向代码为return redirect()->intended(RouteServiceProvider::HOME);,未被修改为错误路由。 - 检查
app/Providers/RouteServiceProvider.php中的HOME常量,确认其指向正确的首页路由(比如'/'或route('dashboard')对应的路径)。
- 打开
Sanctum配置校验
- 查看
config/sanctum.php的stateful数组,确保包含当前应用的完整域名(比如本地开发的['localhost', 'localhost:8000']),该配置决定哪些域名可使用Sanctum会话认证。 - 注意
EnsureFrontendRequestsAreStateful中间件仅用于api中间组,不要错误添加到web中间组,否则会干扰Web端会话认证逻辑。
- 查看
缓存与Cookie排查
- 执行以下命令清除所有缓存,避免旧配置残留:
php artisan cache:clear php artisan config:clear php artisan route:clear php artisan view:clear - 在浏览器开发者工具的
Application标签下,检查laravel_session和XSRF-TOKENCookie是否存在,确认其域名、路径正确,未被标记为过期或被浏览器阻止。 - 使用无痕模式测试登录,排除浏览器插件(如广告拦截器)或本地缓存干扰Cookie的可能。
- 执行以下命令清除所有缓存,避免旧配置残留:
用户模型与认证驱动检查
- 确认
app/Models/User.php正确引入Illuminate\Foundation\Auth\User as Authenticatabletrait,并实现Authenticatable接口(Breeze默认已配置,但手动修改后可能丢失)。 - 查看
config/auth.php:defaults.guard设为web;guards.web.driver设为session,确保默认认证使用会话驱动而非Token驱动。
- 确认
内容的提问来源于stack exchange,提问作者Johan
相关产品推荐
相关产品推荐

