Php Symfony 3.0.1 CSRF令牌存在但无效

Php Symfony 3.0.1 CSRF令牌存在但无效,php,forms,symfony,Php,Forms,Symfony,我在安装新的Symfony 3.0.1时遇到了这个奇怪的问题。我用一个包含url和标题的表单PostType生成了一个新的CRUD控制器。没什么特别的 表单按预期呈现。它包含我的url字段和标题字段。表单内部还呈现隐藏的输入字段_标记 提交此表单时,我一直收到以下错误:CSRF令牌无效。请尝试重新提交表单 The CSRF token is invalid. Please try to resubmit the form. 所以令牌被添加到表单中,它包含一个值,我有一个恒定的PHP会话cooki

我在安装新的Symfony 3.0.1时遇到了这个奇怪的问题。我用一个包含url和标题的表单PostType生成了一个新的CRUD控制器。没什么特别的

表单按预期呈现。它包含我的url字段和标题字段。表单内部还呈现隐藏的输入字段_标记

提交此表单时,我一直收到以下错误:CSRF令牌无效。请尝试重新提交表单

The CSRF token is invalid. Please try to resubmit the form. 所以令牌被添加到表单中,它包含一个值,我有一个恒定的PHP会话cookie值,只是这个令牌无效

我已经搜索了其他答案,但类似的问题都是由于缺少a_代币输入造成的


这个问题也出现在Symfony 3.0.2/3.0.3中。

在我的例子中,是因为
var/sessions/
文件夹不可写。默认值为var/sessions,设置为config.yml

session:
    # http://symfony.com/doc/current/reference/configuration/framework.html#handler-id
    handler_id:  session.handler.native_file
    save_path:   "%kernel.root_dir%/../var/sessions/%kernel.environment%"
确保您有
var/文件夹
可写

chmod 775 -R var/sessions/
chmod 775 -R var/log/
chmod 775 -R var/cache/

这似乎是symfony version>3.0中的一个bug,该bug也出现在3.0.4中。
保存路径:~
对我很有效。

我刚刚在Symfony 3.2上遇到了类似的问题

CSRF令牌无效。请尝试重新提交表单

几个小时后,我们终于发现问题与session.cookie\u secure(https)有关:


我们的生产环境使用https,因此强制通过https保护cookie。开发环境使用http。将开发人员从HTTP移动到HTTPS后,问题得到了解决。

我使用的是Symfony 3.2.1,它在一台机器上工作,但在另一台机器上不工作。不知道为什么

@Shrihari他的回答让我找到了以下解决方案

我的项目还有
cookie\u secure:true
。 我更新了
config_dev.yml
并将
cookie\u secure:false
添加到文件中

framework:
    session:
        cookie_secure: false

这对我很有效。

当我从
dev
切换到
test
环境时,我在Symfony 4.2中遇到了类似的问题

我在
framework.yaml
文件中有以下设置:

framework:
    session:
        storage_id: session.storage.mock_file
解决方案: 删除
存储\u id:session.storage.mock\u文件
-设置解决了问题

重要提示:您可能必须清除缓存才能生效


有关
存储\u id
-配置选项的更多信息,请参阅。

我在env=dev上有相同的配置,但在prepod上没有(symfony 4.4)

--解决方案--

根目录中缺少会话目录 我创造了一个,然后问题解决了


干杯

没有Symfony 3.1.3.1是开发大师。在这里查找:添加一些创建和处理表单的代码。它在3.0中工作吗?devmaster当然是一个正在进行的工作,所以我想它可能会有错误。似乎不太可能合并此类错误。我调试了应用程序,结果发现CsrfTokenManager无法将生成的令牌存储到会话存储中。一旦我解决了这个问题,我将会话保存路径:“%kernel.root\u dir%/../var/sessions/%kernel.environment%”更改为~。这就解决了问题。现在我要弄清楚旧的save_路径有什么问题。这确实是我的问题。非常感谢。它也为我做到了。谢谢你应该接受答案,这样你的问题就不会显得没有解决。这也是我的问题,非常感谢!我有3.1.3,这发生在我身上,这些解决方案都不起作用。使用
server:run
有问题吗?很好。实溶质