我继承了一个symfony2项目,它在实时环境中运行在2个以上的负载均衡服务器上。会话存储在应用程序使用的mysql数据库中。
我遇到的问题是,在有CSRF保护的表单上,有时令牌回来无效。我猜这是因为生成令牌的服务器并不总是获取表单POST的服务器,并且无法匹配正在发送的令牌。
我对symfony非常非常新,并尝试了一些不同的解决方案来使用Symfony框架中的会话和SessionCsrfProvider生成令牌。
有人能指出我正确的方向还是有类似的问题?
答案 0 :(得分:2)
CsrfProviders将通过连接密钥(来自parameters.ini)+意图(默认为空)+ 会话ID 来生成令牌。
默认情况下,symfony配置为使用SessionCsrfProvider
,session_id()
使用会话存储 ID。
如果您使用的是PDOSessionStorage或NativeSessionStorage对象,它将返回session_id()
。
这可能意味着您的{{1}}不同,具体取决于哪台机器处理请求。