【发布时间】:2017-02-16 01:11:24
【问题描述】:
laravel 应用程序 url 类似于 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。
第一个问题
我可以将基于 url 的会话存储在 app.laravel.com\{clientName} 之类的目录中吗?
第二个问题
我看到有一个设置session.path,上面我尝试的是使用这种方法。如果这是可能的,我该如何解决这个问题?在中间件中更新会话路径是个好主意吗?
欣赏任何反馈或其他方法
更新
- 使用
Redis作为会话驱动程序 - 在我的进一步调查中,请求会话令牌每次都会生成一个新的
【问题讨论】: