簡體   English   中英

不能忘記來自 Laravel 5.2 中 ajax 請求的會話

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM