我继承了一个symfony2项目,它在活动环境中运行在超过2个负载平衡服务器中。会话存储在应用程序为此目的使用的mysql数据库中。
我遇到的问题是,在具有CSRF保护的表单上,令牌有时是无效的。我猜想这是因为生成令牌的服务器并不总是获取表单POST的服务器,并且无法匹配正在发送的令牌。
我对symfony非常非常陌生,并且尝试过几种不同的解决方案来使用Symfony框架的会话和SessionCsrfProvider生成令牌。
有人能给我指出正确的方向或者有类似的问题吗?
发布于 2012-02-11 16:00:58
CsrfProviders将通过连接秘密密钥(来自parameters.ini) +意图(默认为null) +会话id来生成令牌。
默认情况下,symfony被配置为使用SessionCsrfProvider
,后者使用会话存储 id。
如果您使用的是PDOSessionStorage或NativeSessionStorage对象,它将返回session_id()
。
这可能意味着您的session_id()
不一样,这取决于哪台机器处理请求。
https://stackoverflow.com/questions/9210813
复制