symfony - Symfony2注销CSRF保护: csrf_provider unrecognized

标签 symfony logout csrf-protection

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

logout:
    csrf_parameter:       _token
    csrf_provider:        ~
    intention:            logout

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

[Symfony\Component\Config\Definition\Exception\InvalidConfigurationException] Unrecognized options "csrf_provider" under "security.firewalls.main.logout"



我正在使用Symfony 2.4 + FOSUserBundle 1.3。

最佳答案

我研究了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

Twig 模板:
<a href="{{ logout_url('your_firewall_name') }}">Logout</a>

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

希望此信息对您有所帮助。

关于symfony - Symfony2注销CSRF保护: csrf_provider unrecognized,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24353510/

相关文章:

angularjs - 如何使用 Laravel API 在 AngularJS 表单中发送 csrf_token()?

cookies - 在 cookie 中存储不记名 token 的安全性

php - 在命令中调用控制台命令并在 Symfony2 中获取输出

mysql - doctrine2 QueryBuilder 中的聚合子查询

spring-security - 加特林测试 CSRF Spring Security 通过 Web 表单阻止我的帖子

linux - X11 注销信号

angularjs - 清除 AngularJs 中的服务数据

php - 全局日志服务

mysql - 如何使用 doctrine 2 在 symfony 2 中调用带输出参数的 mysql 存储过程?

symfony - Sonata admin-bundle - 尚未注销导航栏