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

如何将Filament+stancl/laravel登录页置于中心域名并支持租户选择?

解决Filament多租户登录页部署及跳转问题

1. 调整中间件与路由分组,隔离中心域名与租户域名

  • 避免InitializeTenancyByDomain中间件作用于中心域名的登录路由,在app/Http/Kernel.php或routes/web.php中拆分路由组:
    // 中心域名路由组(无租户中间件)
    Route::domain(config('app.central_domain'))->group(function () {
        Filament::loginRoute();
        Filament::logoutRoute();
    });
    
    // 租户子域名路由组(应用租户中间件)
    Route::domain('{tenant}.' . config('app.central_domain'))
        ->middleware([
            'web',
            InitializeTenancyByDomain::class,
            'tenancy:central',
        ])
        ->group(function () {
            Filament::routes();
        });
    
  • 修改config/filament.php,取消硬编码域名配置,交由路由组控制:
    'domain' => null,
    'path' => '/admin',
    

2. 自定义登录控制器,处理认证后租户跳转

  • 扩展Filament默认登录控制器,在认证成功后根据用户选择的租户生成子域名跳转链接:
    namespace App\Http\Controllers\Auth;
    
    use Filament\Http\Controllers\Auth\LoginController as BaseLoginController;
    use Illuminate\Http\Request;
    
    class LoginController extends BaseLoginController
    {
        protected function authenticated(Request $request, $user)
        {
            // 获取登录表单提交的租户ID,需确保表单已添加tenant_id字段
            $tenant = $user->tenants()->findOrFail($request->tenant_id);
            
            // 构建租户子域名后台地址
            $tenantAdminUrl = "https://{$tenant->domain}.{config('app.central_domain')}" . config('filament.path');
            
            return redirect()->to($tenantAdminUrl);
        }
    }
    
  • 在config/filament.php中指定自定义登录控制器:
    'auth' => [
        'controller' => App\Http\Controllers\Auth\LoginController::class,
    ],
    

3. 禁用Filament自动路由,避免路由冲突

  • 在config/filament.php中关闭自动路由生成,确保手动注册的路由生效:
    'routes' => false,
    

4. 验证租户会话关联逻辑

  • 若跳转后租户上下文未正确初始化,可在登录后的跳转前临时初始化租户:
    // 在authenticated方法内添加
    tenancy()->initialize($tenant);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 14:27:09