laravel应用程序网址将类似于app.laravel.com\{clientName}
。所有路线都将遵循client_name
,例如app.laravel.com\{clientName}\home
,app.laravel.com\{clientName}\profile
。将加载/呈现应用程序取决于clientName
。
routes/web.php
Route::group(['prefix' => '{clientName}', 'middleware' => 'appclient'], function () {
Route::get('/', 'ClientController@index');
Route::post('login', 'Auth\LoginController@login');
Route::post('logout', 'Auth\LoginController@logout');
Route::get('home', 'HomeController@index');
});
在 appclient
中间件
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);
}
我想要实现的是基于clientName
目录设置会话。当我登录时,我得到TokenMismatchException。
第一个问题
我可以根据网址app.laravel.com\{clientName}
等目录存储会话吗?
第二个问题
我看到有一个设置session.path
,我尝试过的是使用这种方法。如果可以,我该如何解决这个问题?更新中间件中的会话路径是个好主意吗?
欣赏任何反馈或其他方法
更新
Redis
作为会话驱动程序答案 0 :(得分:0)
我所做的更新了session.path
&动态session.cookie
。
Config::set('session.path', "$clientName");
Config::set('session.cookie', $clientName.'_laravel_session');
目前这对我有用。