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

时间:2012-05-19 07:50:53

标签: forms symfony phpunit csrf csrf-protection

如何在我的所有浏览器中调试为什么 CSRF令牌无效错误,但是当我使用功能测试测试相同的表单时,它有效吗?

4 个答案:

答案 0 :(得分:2)

如果您自定义表单呈现输入方式,请检查您是否添加了 {{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>

答案 1 :(得分:2)

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

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

答案 2 :(得分:2)

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

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

答案 3 :(得分:-5)

你可以使用@csrf_exempt装饰器来除去csrf令牌,你必须导入

来自django.views.decorators.csrf import csrf_exempt

然后在您的视图之前写下@csrf_exempt

这将正常工作:)