Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Forms Symfony2.1:CSRF令牌无效。只有在浏览器中,PHPUnit WebTestCase才能正常工作_Forms_Symfony_Phpunit_Csrf_Csrf Protection - Fatal编程技术网

Forms Symfony2.1:CSRF令牌无效。只有在浏览器中,PHPUnit WebTestCase才能正常工作

Forms Symfony2.1:CSRF令牌无效。只有在浏览器中,PHPUnit WebTestCase才能正常工作,forms,symfony,phpunit,csrf,csrf-protection,Forms,Symfony,Phpunit,Csrf,Csrf Protection,我如何调试为什么在我所有的浏览器中,CSRF令牌都是无效的,但当我用Functional test测试同一个表单时,它是有效的 如果自定义表单呈现输入的方式,请检查是否添加了{{form_rest(form)},如下一个示例所示。 范例 <form action="{{ path('BloggerBlogBundle_contact') }}" method="post" {{ form_enctype(form) }}> {{ form_errors(form) }}

我如何调试为什么在我所有的浏览器中,CSRF令牌都是无效的,但当我用Functional test测试同一个表单时,它是有效的

如果自定义表单呈现输入的方式,请检查是否添加了{{form_rest(form)},如下一个示例所示。

范例

<form action="{{ path('BloggerBlogBundle_contact') }}" method="post" {{ form_enctype(form) }}>
    {{ form_errors(form) }}

    {{ form_row(form.name) }}
    {{ form_row(form.email) }}
    {{ form_row(form.subject) }}
    {{ form_row(form.body) }}

    {{ form_rest(form) }}

    <input type="submit" value="Submit" />
</form>

{{form_errors(form)}}
{{form_row(form.name)}}
{{form_row(form.email)}
{{form_row(form.subject)}
{{form_row(form.body)}
{{form_rest(form)}

当我在下面评论我的config.yml时,一切都开始工作了?所以新的问题是:这个配置的注释部分有什么问题

session:
    auto_start:     true
    # cookie_lifetime:   86400
    # cookie_path:       \
    # cookie_domain:     example.com
    # cookie_secure:     true
    # cookie_httponly:   true

您可以使用@csrf\u employ decorator来豁免您必须导入的csrf令牌

从django.views.decorators.csrf导入csrf_豁免

然后在视图前写@csrf_


这将正常工作:)

对于我来说,禁用安全cookie在从symfony 2.0.16升级到2.1.6后解决了此问题:

session:
    cookie_lifetime:   3600
    cookie_path:       \
    cookie_domain:     .%base_domain%
    cookie_secure:     false
    cookie_httponly:   true

我在模板中只得到了{{form_widget(form)}}。标记在html源代码中可见此问题与Symfony2有关,而不是Python或Django。