2016-02-04 114 views
6

我有一个新鲜的Symfony 3.0.1安装这个奇怪的问题。我使用Form PostType生成了一个新的CRUD控制器,其中包含一个url和一个标题。没有什么花哨。Symfony 3.0.1 CSRF令牌存在,但无效

表单按预期呈现。它包含我的网址字段和标题字段。在表单中隐藏的输入字段_token也被渲染。

当提交这种形式,我得到一切的时候出现以下错误:

The CSRF token is invalid. Please try to resubmit the form.

所以令牌被添加到形式,它包含一个值,我有一个恒定的PHP会话cookie的值,它仅仅是这个标记无效。

我已经搜索了其他答案,但类似的问题都是由于缺少_token输入引起的。

在Symfony 3.0.2/3.0.3中也会出现此问题。

+0

没有Symfony 3.1。 –

+0

3.1是开发大师。在这里查看:https://packagist.org/packages/symfony/symfony#dev-master – yellowmen

+0

添加一些代码,创建并处理表格 –

回答

13

在我的情况下,它是var/sessions/文件夹不可写。默认值是在config.yml中设置的var/sessions。

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/ folders可写。

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

这确实是我的问题。谢谢! – shrty

+0

它也为我做了。谢谢! – ptocquin

+0

您应该接受一个答案,以便您的问题不会出现。 – Veve

0

它似乎是一个symfony版本> 3.0中的bug,< 3.0.3。

正如@yellowmen指出的那样,更改framework.session.save_path中的可以解决问题。

+0

我有3.1.3和这发生在我身上,这些解决方案都没有工作。使用'server:run'是否有问题? –

0

该错误也出现在3.0.4中。 save_path: ~为我工作。

3

我刚做了一个类似的问题与Symfony的3.2

The CSRF token is invalid. Please try to resubmit the form.

小时后,我们终于找到了问题涉及session.cookie_secure(HTTPS):

我们的生产环境使用HTTPS,从而力cookies通过https保护。开发环境使用http。将开发人员从HTTP移至HTTPS后,问题得到解决。

0

我正在使用Symfony 3.2.1,它在一台机器上工作,但没有在其他机器上工作。不知道为什么。

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

我的项目也有cookie_secure: true。 我更新了config_dev.yml并将cookie_secure: false添加到文件中。

framework: 
    session: 
     cookie_secure: false 

这对我有效。