Проверьте переменную сеанса перед промежуточным программным обеспечением авторизации laravel

Мне нужно проверить переменную сеанса, чтобы установить элемент конфигурации в laravel. Мне нужно, чтобы это работало до промежуточного ПО аутентификации. Я попробовал всевозможные конфигурации, чтобы заставить его работать, но, несмотря ни на что, аутентификация запускается до того, как я настрою базу данных, чтобы она не могла найти пользователя.

Это то, что я до сих пор:

Kernal.php

'web' => [
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::class,
        \Illuminate\Routing\Middleware\SubstituteBindings::class,
        \App\Http\Middleware\CheckTenant::class,
    ],

CheckTenant:

public function handle($request, Closure $next)
{

    if(session()->has('database')){
        //set db in config for eloquent
        Config::set('database.connections.mysql.database', session('database'));
    }

    $response = $next($request);

    return $response;

}

Мой маршрут:

Route::group(['middleware' => 'auth'], function () {

    // All my routes that needs a logged in user
    Route::get('/dashboard', function () {
        return view('jobs.index');
    });

});

Так что в основном мне просто нужно установить элемент конфигурации при каждом запросе, прежде чем он проверяет аутентификацию.

Любая помощь могла бы быть полезна.

1 ответ

Проблема в том, что вы пытаетесь сохранить данные в конфигурации после обработки запроса приложением (см. Раздел "До и после промежуточного программного обеспечения"). Настройка конфигурации после обработки запроса приложением просто не имеет никакого смысла.

Синтаксис должен быть:

public function handle($request, Closure $next)
{
    if (session()->has('database')) {
        Config::set('database.connections.mysql.database', session('database'));
    }

    $response = $next($request);

    return $response;

}
Другие вопросы по тегам