2016-10-07 10 views
5

laravelアプリケーションのURLはapp.laravel.com\{clientName}のようになります。すべてのルートはclient_nameに従います(例:app.laravel.com\{clientName}\homeapp.laravel.com\{clientName}\profile)。アプリケーションをロード/レンダリングするかどうかは、clientNameに依存します。 appclientミドルウェアclientNameディレクトリに基づいてセッションを設定されている私は何を達成しようとしているLaravelアプリケーションはセッションパスを動的に変更します

public function handle($request, Closure $next) { 
    $clientName = explode('/', $request->path())[0]; 
    $client = Client::where('clientName', $clientName)->first(); 

    if(!isset($client->id)) { 
     abort(404); 
    } 

    Config::set('session.path', "/$clientName"); 

    return $next($request); 
} 

Route::group(['prefix' => '{clientName}', 'middleware' => 'appclient'], function() { 
    Route::get('/', '[email protected]'); 
    Route::post('login', 'Auth\[email protected]'); 
    Route::post('logout', 'Auth\[email protected]'); 
    Route::get('home', '[email protected]'); 
}); 

routes/web.php

。私がログインすると、TokenMismatchExceptionが発生します。

最初の質問

は私がapp.laravel.com\{clientName}のようなディレクトリとURLに基​​づいてセッションを保存することができますか?

2番目の質問

は、私はそのアプローチを使用することですしようとした上でどのような設定session.path、ありました。可能であれば、どうすればこの問題を解決できますか?ミドルウェアのセッションパスを更新するのは良い考えですか?

任意のバックフィードや他に感謝をするたびに、新しい1 を生成

UPDATE私の更なる調査では、セッションドライバ

  • よう要求セッショントークンをRedisを使用して

    • に近づきます
  • 答えて

    0

    私は何ですか? dは、session.path & session.cookieに動的に更新されます。

    Config::set('session.path', "$clientName"); 
    Config::set('session.cookie', $clientName.'_laravel_session'); 
    

    これは現在私のために働いています。

    関連する問題