2016-10-07 6 views
5

Die Laravel-Anwendung URL wird so etwas wie app.laravel.com\{clientName} sein. Alle Routen folgen dem client_name, zum Beispiel app.laravel.com\{clientName}\home, app.laravel.com\{clientName}\profile. Will laden/rendern die Anwendung hängt von der clientName.Laravel Anwendung Session-Pfad dynamisch ändern

routes/web.php

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

Im appclient Middleware

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

Was ich versuche, die Sitzung wird auf dem clientName Verzeichnis basiert zu erreichen. Wenn ich mich anmelde, erhalte ich TokenMismatchException.

Erste Frage

Kann ich die Sitzung basierend auf URL mit Verzeichnis wie app.laravel.com\{clientName}?

zweite Frage

Ich sah es eine Einstellung session.path ist, was oben Ich habe versucht, ist, diesen Ansatz zu verwenden. Wenn das möglich ist, wie kann ich dieses Problem beheben? Ist es eine gute Idee, den Sitzungspfad in der Middleware zu aktualisieren?

Freuen uns über jede Rückmeldung oder andere Ansätze

UPDATE

  • Mit Redis als Session-Treiber
  • In meiner weiteren Untersuchung die Anfrage Session-Token jedes Mal erzeugt neue

Antwort

0

Was ich di d wird die session.path & session.cookie dynamisch aktualisiert.

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

Dies funktioniert derzeit für mich.