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

Laravel主域与租户共用认证体系的实现疑问及问题求助

Laravel 主域与租户共用认证体系配置方案

完全可以实现主域与租户共用登录功能,核心是通过通用路由统一加载认证路由,而非分别在主域和租户路由文件中重复配置。以下是具体解决步骤:

问题根源

之前在web.php和tenant.php中分别添加Auth::routes(),会导致路由规则冲突:租户路由的域名匹配规则(如{tenant}.example.com)优先级可能覆盖主域路由,使得主域的认证请求找不到对应路由,从而出现404错误。

正确配置方式

1. 创建通用路由文件

在routes目录下新建global.php,将认证路由统一放在这里:

// routes/global.php
Auth::routes();

2. 修改路由服务提供者

打开app/Providers/RouteServiceProvider.php,调整路由注册顺序,确保通用路由在主域和租户路由之前加载,且不绑定特定域名或租户中间件:

public function boot()
{
    $this->configureRateLimiting();

    $this->routes(function () {
        // 通用路由:主域与租户共享
        Route::middleware('web')
            ->namespace($this->namespace)
            ->group(base_path('routes/global.php'));

        // 主域专属路由
        Route::middleware('web')
            ->domain(config('app.url'))
            ->namespace($this->namespace)
            ->group(base_path('routes/web.php'));

        // 租户专属路由
        Route::middleware(['web', 'tenant'])
            ->domain('{tenant}.' . config('app.url'))
            ->namespace($this->namespace)
            ->group(base_path('routes/tenant.php'));
    });
}

3. 验证路由配置

运行命令查看路由列表,确认认证路由(如login、logout)已被正确注册:

php artisan route:list

你会看到这些路由没有绑定特定域名,主域(example.com/login)和租户(tenant.example.com/login)均可访问。

认证逻辑适配(可选)

如果主域和租户使用不同的用户表/认证守卫,需在登录控制器中区分环境:

// app/Http/Controllers/Auth/LoginController.php
public function authenticate(Request $request)
{
    $credentials = $request->validate([
        'email' => ['required', 'email'],
        'password' => ['required'],
    ]);

    $authGuard = tenant() ? 'tenant' : 'web';
    if (Auth::guard($authGuard)->attempt($credentials)) {
        $request->session()->regenerate();
        $redirectPath = tenant() ? '/dashboard' : '/';
        return redirect()->intended($redirectPath);
    }

    return back()->withErrors([
        'email' => '提供的凭证与记录不符',
    ])->onlyInput('email');
}

测试验证

  • 主域访问example.com/login,确认登录页面正常加载且认证功能可用
  • 租户访问{tenant}.example.com/login,确认同样能正常登录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 02:50:07