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

Laravel多域名下can中间件失效,登录后仍被重定向求助

问题排查方案

1. 修复会话跨域共享问题

Laravel 默认会话绑定单个域名,dashboard.khassepaz.test 和主域名 khassepaz.test 的会话无法自动共享。需要修改 .env 文件中的 SESSION_DOMAIN 配置为 .khassepaz.test(注意开头的英文点),让所有子域名共享同一会话。修改后清理浏览器缓存和 Cookie,确保新配置生效。

2. 验证中间件执行与会话组件

检查 app/Http/Kernel.php 中的 $middlewareGroups['web'] 是否包含 StartSession、EncryptCookies、VerifyCsrfToken 这些核心组件(默认已包含)。当前中间件顺序 ['web', 'auth', 'can:isAdmin'] 是合理的,web 中间件需先启动会话,后续的 auth 和 can 才能正常识别用户。

3. 测试Gate是否被触发

在 AuthServiceProvider 的 boot 方法中给 Gate 添加日志输出,确认它是否被调用:

Gate::define('isAdmin', fn (\App\Models\User $user) => {
    \Log::info('isAdmin Gate 触发,用户ID:' . $user->id);
    return true;
});

访问 dashboard 域名后,查看 storage/logs/laravel.log 中是否有这条日志。如果没有,说明 auth 中间件未识别到登录用户(大概率是会话跨域问题导致),直接触发了重定向。

4. 确认子域名路由注册状态

运行 php artisan route:list,检查输出中是否存在 dashboard.khassepaz.test 前缀的路由。同时确保 routes/dashboard.php 内有实际的路由定义,比如:

Route::get('/', function () {
    return 'Dashboard 页面';
});

若路由文件为空,访问时可能触发异常重定向,但结合你描述的现象,会话跨域仍是核心嫌疑点。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 02:07:04