Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

RoffDaniel's avatar

One session or one data in sessions of 2+ domains

Hello everyone, welcome! For my project I use more than one domain connected to one site. Faced with such a problem: it is impossible to synchronize data between domains (sessions and cookies). For example, I change the language on the first domain, but on the second it does not change at all. I need help(

I found here a discussion on a similar topic, but it did not help me, unfortunately: https://laracasts.com/discuss/channels/laravel/how-to-have-multiple-domains-for-cookie-session

Here is my Kernel:

class Kernel extends HttpKernel
{
    /**
     * The application's global HTTP middleware stack.
     *
     * These middleware are run during every request to your application.
     *
     * @var array
     */
    protected $middleware = [
        // \App\Http\Middleware\TrustHosts::class,
        \App\Http\Middleware\TrustProxies::class,
        \Fruitcake\Cors\HandleCors::class,
        \App\Http\Middleware\PreventRequestsDuringMaintenance::class,
        \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
        \App\Http\Middleware\TrimStrings::class,
        \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
        // Custom
        \App\Http\Middleware\Custom\CheckRegionMiddleware::class,
    ];

    /**
     * The application's route middleware groups.
     *
     * @var array
     */
    protected $middlewareGroups = [
        'web' => [
            // Custom
            \App\Http\Middleware\Custom\SessionDomainsMiddleware::class,
            //
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            // \Illuminate\Session\Middleware\AuthenticateSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
            // Custom
            \App\Http\Middleware\Custom\LanguageMiddleware::class,
        ],

        'api' => [
            'throttle:api',
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],
    ];

    /**
     * The application's route middleware.
     *
     * These middleware may be assigned to groups or used individually.
     *
     * @var array
     */
    protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
        'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
    ];

    /**
     * The priority-sorted list of middleware.
     *
     * This forces non-global middleware to always be in the given order.
     *
     * @var array
     */
    protected $middlewarePriority = [
        \Illuminate\Cookie\Middleware\EncryptCookies::class,
        \App\Http\Middleware\Custom\SessionDomainsMiddleware::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \Illuminate\Contracts\Auth\Middleware\AuthenticatesRequests::class,
        \Illuminate\Routing\Middleware\ThrottleRequests::class,
        \Illuminate\Session\Middleware\AuthenticateSession::class,
        \Illuminate\Routing\Middleware\SubstituteBindings::class,
        \Illuminate\Auth\Middleware\Authorize::class,
    ];
}

This is my route scheme:

Route::domain(config('app.domain'))->group(function () {
    Route::get('', [\App\Http\Controllers\Main\IndexController::class, 'index'])->name('index');

   	// Routes

    // Language switcher
    Route::get('switch-language-to/{lang}', [\App\Http\Controllers\Tools\LanguageController::class, 'switchLang'])->name('lang-switch');
});
Route::domain(config('app.games_domain'))->group(function () {
    // Routes
});
Route::domain('mc.' . config('app.games_domain'))->group(function () {
    Route::get('', [\App\Http\Controllers\Games\MC\IndexController::class, 'index'])->name('mc_games_index');
});

Thanks a lot!

0 likes
0 replies

Please or to participate in this conversation.