Laravel会话令牌在每次刷新时更改


Laravel Session Token being changed on every refresh

解决这些问题。会话被正确存储,文件没有改变,会话仍然存在。配置文件中的会话生存期为120。但是,我的会话数组_token键在每次刷新时都会更改值,因此它无法拉出写入的正确会话。

什么可能导致会话令牌在每次刷新页面时更改?

LoginController.php重定向后的会话

array:7 [▼
"_token" => "7bcBy6cPKpMO0BBUvrVOUPd3YHmCSoMEpxHWLcvk"
"_previous" => array:1 [▶]
"flash" => array:2 [▶]
"login_82e5d2c56bdd0811318f0cf078b78bfc" => 78
"username" => "demo"
"Account" => "demo"
"Auth" => array:1 [▶]
]

第一次刷新后的会话数组:

array:1 [▼
"_token" => "o5l9uGjjmVwr5vZXC5MZH3GaClYXW1OxarWVN7p5"
]

第二次刷新后的会话数组:

array:1 [▼
"_token" => "i5IFTEWM6txuNPSFL6SMa3a2gUrQzciREd8pUp4K"
]

可以看到_token不断变化,会话数据的其余部分被擦除。是什么原因导致的呢?

更新:所以我现在已经测试了不同的会话驱动程序。我已经测试了文件、数据库和cookie。它们都无法保存会话数据。什么可能导致会话数据被擦除或不能正确加载?

更新2:

所以我遇到了一些非常有趣的事情。是Chrome出了问题。当在firefox中运行这个应用程序时,会话工作正常。什么会导致Chrome丢失会话数据?

会话令牌通过cookie存储(客户端)。检查你的chrome配置

去:

chrome://settings/

点击链接:

show advanced settings...
Privacy > Content Setting...

默认选择的选项是:

Allow local data to be set (recommended)

如果本地数据被阻塞,chrome将需要在每次刷新时进行新的身份验证,从而导致laravel提供新的令牌,就像您正在经历的那样。

所以问题就像亚瑟想的那样。这与旧的cookie会话不断覆盖会话有关,即使缓存被清除和驱动程序类型被更改。在清除了我的cookie后,它开始正确写入并保持会话。