Symfony2注销CSRF保护:csrf_provider无法识别

时间:2014-06-22 16:54:47

标签: symfony logout csrf-protection

如何保护注销操作?我看了default configuration,然后设置了

logout:
    csrf_parameter:       _token
    csrf_provider:        ~
    intention:            logout

但是当我尝试清除缓存时,显示以下错误:

  

[Symfony的\元器件\配置\定义\异常\ InvalidConfigurationException]   无法识别的选项" csrf_provider"在" security.firewalls.main.logout"

我正在使用Symfony 2.4 + FOSUserBundle 1.3。

1 个答案:

答案 0 :(得分:15)

我已经研究了Symfony的代码,发现现在csrf_provider选项已重命名为csrf_token_generator。然后我用Google搜索并找到相关的issue on GitHub。所以在不同步的文档中存在问题。

最终的解决方案是:

<强>配置:

# app/config/security.yml

security:
    # ...
    firewalls:
        # ...
        your_firewall_name:
            # ...
            logout:
                # ...
                csrf_token_generator: your_csrf_provider # e.g. form.csrf_provider

树枝模板:

<a href="{{ logout_url('your_firewall_name') }}">Logout</a>

请注意,由于帮助程序错误,我们正在使用logout_url()而不是logout_path()(它会在开发环境中生成没有app_dev.php后缀的绝对路径)。 Theese twig helpers将%token_parameter%附加到您的注销URI,例如http://example.com/app_dev.php/logout?_csrf_token=36wX6HYU2ASeZBQw_iwKcUDbplmFm4W7Ez-tMaavDNo

希望这些信息有用。