[英]Can't forget session from ajax request in laravel 5.2
我正在將 jquery ajax post 運行到我的控制器,在那里我檢查會話是否存在。 如果是這種情況,我讀取值,忘記我的會話並將一些數據返回到視圖。
如果我在使用忘記后在控制器函數中使用 session()->has,它將被刪除。 但是當我重新加載頁面並再次執行 ajax 請求時,會話仍然存在。
在我的控制器中,我嘗試通過忘記和拉動來刪除它。
$request->session()->forget('last_history_id');
$request->session()->pull('last_history_id')
所以我的問題是,為什么我不能忘記我的 ajax 請求中的會話,所以它會隨着下一頁重新加載而消失?
我建議在config/session.php
文件中從file
驅動程序更改為database
驅動程序(或除文件之外的任何驅動程序)。
使用file
和異步調用時存在一些已知問題。 我遇到了您遇到的確切問題,切換到database
,問題已解決。
您可以相當輕松地切換到database
。 這里是更多幫助的文檔,還有下面的相關代碼。
您需要設置一個表來包含會話項目。 您可以使用php artisan session:table
來生成遷移。 然后只是composer dump-autoload
,然后是php artisan migrate
。 這將為您在數據庫中創建表。
最后,告訴 Laravel 你更喜歡這個驅動程序。 根據您設置環境的方式,這可以在config/session.php
硬編碼,也可以從.env
文件中.env
。
這個問題可能與我的有關:
我最近遇到了一個問題,即使用 AJAX 請求時session_id
發生變化。 可能是當您檢查會話時,它實際上是一個新會話。 所以當你忘記它時,它對瀏覽器的主會話沒有影響。
問題可能是路由上的web
中間件的雙重綁定。 我沒有注意到 web 已經應用於RouteServiceProvider
。 在我的問題路由上刪除'middleware' => 'web'
,這個問題就完全消失了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.