【问题标题】:Laravel application change session path dynamicallyLaravel 应用程序动态更改会话路径
【发布时间】:2017-02-16 01:11:24
【问题描述】:

laravel 应用程序 url 类似于 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。

第一个问题

我可以将基于 url 的会话存储在 app.laravel.com\{clientName} 之类的目录中吗?

第二个问题

我看到有一个设置session.path,上面我尝试的是使用这种方法。如果这是可能的,我该如何解决这个问题?在中间件中更新会话路径是个好主意吗?

欣赏任何反馈或其他方法

更新

  • 使用Redis 作为会话驱动程序
  • 在我的进一步调查中,请求会话令牌每次都会生成一个新的

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

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

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

    这目前对我有用。

    【讨论】:

      猜你喜欢
      • 2016-12-15
      • 1970-01-01
      • 2014-08-30
      • 2021-09-20
      • 2020-03-12
      • 1970-01-01
      • 1970-01-01
      • 2016-05-06
      • 1970-01-01
      相关资源
      最近更新 更多