【问题标题】:Symfony2 logout CSRF protection: csrf_provider unrecognizedSymfony2 注销 CSRF 保护:csrf_provider 无法识别
【发布时间】:2014-08-12 18:15:09
【问题描述】:

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

logout:
    csrf_parameter:       _token
    csrf_provider:        ~
    intention:            logout

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

[Symfony\Component\Config\Definition\Exception\InvalidConfigurationException] “security.firewalls.main.logout”下无法识别的选项“csrf_provider”

我正在使用 Symfony 2.4 + FOSUserBundle 1.3。

【问题讨论】:

  • 你能改写你的问题标题吗?通常它应该不包含任何在问题中标记的关键词。您的标题仅包含关键字。
  • 你检查过这个吗:stackoverflow.com/questions/20350330/…
  • @isi 抱歉,但我无法改写它,因为它非常具体,而且我的想象力和英语水平低下会阻止这样做:( 如果版主认为有必要改写它 - 我同意。
  • @DenisV 我已经检查过这个话题。这与我的问题不太相关,但我的应用中已经启用了 CSRF 保护。

标签: symfony logout csrf-protection


【解决方案1】:

我研究了 Symfony 的代码,发现现在 csrf_provider 选项重命名为 csrf_token_generator。然后我用谷歌搜索并找到了相关的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.

希望这些信息会有所帮助。

【讨论】:

    猜你喜欢
    • 2013-12-19
    • 2013-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-26
    • 2012-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多