use*_*505 6 logout symfony csrf-protection
如何保护注销操作?我读了默认配置,然后设置
logout:
csrf_parameter: _token
csrf_provider: ~
intention: logout
Run Code Online (Sandbox Code Playgroud)
但是当我尝试清除缓存时显示以下错误:
[Symfony\Component\Config\Definition\Exception\InvalidConfigurationException]"security.firewalls.main.logout"下无法识别的选项"csrf_provider"
我正在使用Symfony 2.4 + FOSUserBundle 1.3.
use*_*505 16
我研究了Symfony的代码,发现现在的csrf_provider选项被重命名为csrf_token_generator.然后我用Google搜索并在GitHub上找到相关问题.所以在不同步的文档中存在问题.
最终的解决方案是:
组态:
# app/config/security.yml
security:
# ...
firewalls:
# ...
your_firewall_name:
# ...
logout:
# ...
csrf_token_generator: your_csrf_provider # e.g. form.csrf_provider
Run Code Online (Sandbox Code Playgroud)
树枝模板:
<a href="{{ logout_url('your_firewall_name') }}">Logout</a>
Run Code Online (Sandbox Code Playgroud)
注意,我们正在使用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.
希望这些信息会有所帮助.