![](/img/trans.png)
[英]How can I offer both URL-based and COOKIE-based SESSION TRACKING depending on Cookie Support?
[英]Laravel Sanctum and Cookie-Based Session Security
所以我設置了一個 SPA,使用 Laravel Sanctum 建議的基於 cookie 的身份驗證對 Laravel 應用程序進行身份驗證。
但是,我很難理解使用基於 cookie 的會話的安全性。 據我所見,如果我使用 Laravel 應用程序進行身份驗證,我會在存儲客戶端的 cookie 中收到會話。 一切都很好,並且在意料之中。
但是,如果我隨后請求一些數據,然后繼續注銷我的應用程序,然后在網絡選項卡中發送一個包含先前請求的數據請求,我會返回數據,盡管之前曾嘗試使用 Laravel 進行未經身份驗證。 在我看來,Laravel 並沒有使之前的會話無效。
采取以下場景:
我無法理解 Laravel 會允許這成為一件事,所以我有點相信我在某個地方遺漏了一步。
以下是我目前在注銷控制器中的內容; 我嘗試過使用和不使用網絡保護,使用和不使用會話無效調用。 是否有這樣做的“正確”方式,或者這只是基於 cookie 的會話工作方式中的一些缺陷; 它們僅存儲在客戶端嗎? 我應該能夠再次請求數據並通過身份驗證嗎?
Auth::guard('web')->logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
我在使用cookie
會話驅動程序和Auth::guard('web')->logout();
時遇到了同樣的問題在我的注銷網絡路由中。 雖然我找不到任何文檔來支持這一點,但我相信這是因為 cookie 僅存儲在此配置中的客戶端。
將驅動程序從cookie
更改為database
通過保留會話數據服務器端解決了該問題,注銷功能能夠使其無效,並且先前發出的 cookie 將不再起作用。
要進行此更改,我們可以按照Laravel 文檔中的說明進行操作:
使用database
會話驅動程序時,您需要創建一個表來包含會話記錄。 [...] 您可以使用session:table
Artisan 命令來生成此遷移。
php artisan session:table
php artisan migrate
完成此操作后,將.env
文件中的SESSION_DRIVER
選項從cookie
更新到database
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.