2017-01-09 40 views
1

laravelで設定項目を設定するためにセッション変数をチェックする必要があります。私はそれが認証ミドルウェアの前に実行する必要があります。私は、それを動作させるためにあらゆる種類の設定を試しましたが、ユーザを見つけることができないようにデータベースを設定する前にauthが何を実行していても関係ありません。laravel authミドルウェアより前にセッション変数を確認する

これは私がこれまで持っているものです。

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'); 
    }); 

}); 

設定項目をeに設定する認証を確認する前に確認してください。

本当にありがとうございます。

答えて

0

問題は、設定after the request is handled by the applicationにデータを保存しようとしていることです(前の「&ミドルウェアセクションの後」を参照)。リクエストがアプリケーションによって処理された後にconfigを設定するだけで意味がありません。

構文は次のようになります。

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

    $response = $next($request); 

    return $response; 

} 
+0

認証ミドルウェアは、まだこの前に実行しているようですか? – jhodgson4

関連する問題