Проверьте переменную сеанса перед промежуточным программным обеспечением авторизации 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;
}