如何保护注销操作?我读了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/