解决这些问题。会话正确存储,文件不会更改,会话仍在那里。 Config文件中的会话生存期为120.但是,我的Session数组_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丢失会话数据?
答案 0 :(得分:0)
会话令牌通过cookie存储(客户端)。检查您的chrome配置。
转到:
chrome://settings/
点击链接:
show advanced settings...
Privacy > Content Setting...
默认情况下,所选选项为:
Allow local data to be set (recommended)
如果本地数据被阻止,Chrome将在每次刷新时需要新的身份验证,从而导致laravel提供新的令牌,就像您遇到的那样。
答案 1 :(得分:-1)
所以这个问题就像Arthur想的那样。这与旧的cookie会话只是一直覆盖会话,即使缓存被清除并且驱动程序类型被更改。清除我的cookie一生的chrome后,它开始正确编写并保持会话。这对我来说是一个全新的错误。