Laravel应用程序动态更改会话路径

时间:2016-10-07 06:00:00

标签: php laravel laravel-5

laravel应用程序网址将类似于app.laravel.com\{clientName}。所有路线都将遵循client_name,例如app.laravel.com\{clientName}\homeapp.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作为会话驱动程序
  • 在我的进一步调查中,请求会话令牌每次生成新的

1 个答案:

答案 0 :(得分:0)

我所做的更新了session.path&动态session.cookie

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

目前这对我有用。