我正在嘗試創建一箇中間件,用於統計一段時間內用戶訪問我的網站的次數。我試圖在我的中間件中使用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