繁体   English   中英

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

[英]Laravel Session Token being changed on every refresh

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

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

去:

chrome://settings/

点击链接:

show advanced settings...

Privacy > Content Setting...

默认情况下,所选选项为:

Allow local data to be set (recommended)

如果本地数据被阻止,Chrome将在每次刷新时需要新的身份验证,从而导致laravel提供新的令牌,就像您遇到的那样。

所以这个问题就像Arthur想的那样。 这与旧的cookie会话只是一直覆盖会话,即使缓存被清除并且驱动程序类型被更改。 清除我的cookie一生的chrome后,它开始正确编写并保持会话。 这对我来说是一个全新的错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM