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

时间:2015-07-24 18:10:20

标签: php google-chrome session laravel-5

解决这些问题。会话正确存储,文件不会更改,会话仍在那里。 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丢失会话数据?

2 个答案:

答案 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后,它开始正确编写并保持会话。这对我来说是一个全新的错误。