我正在尝试创建一个中间件,用于统计一段时间内用户访问我的网站的次数。我试图在我的中间件中使用laravel会话。这里是我的代码:会话在中间件laravel中不工作5.2
class SessionHandler {
public function handle($request, Closure $next){
if(!Session::has('count')){
Session::set('count', 1);
Session::save();
}else{
$numOfVisits = Session::get('count');
$numOfVisits++;
Session::set('count', $numOfVisits);
Session::save();
}
dd(Session::get('count'));
}
}
在我的应用程序
\ HTTP \ kernel.php我加入了中间件SessionStart中间件之后:
protected $middleware = [
....
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
....
\Dideo\Http\Middleware\SessionHandler::class,
];
但我每次刷新页面,我得到的回应是1这意味着会话没有设置。
如何在laravel中间件中使用会话?
[编辑]
我发现,问题是与EncryptCookie中间件。我的会话驱动程序是数据库,每次刷新页面时都会在会话表中添加一条记录。
当我关闭EncryptCookie中间件时,问题得到解决。
它不应该是 - >'如果(会话:: has('count'))'(如果没有值用'1'实例化? –
修复它但仍然有问题 – Alireza