在SF2经典应用程序中,如何仅针对开发环境禁用表单登录CSRF?
config.yml:
imports:
- { resource: parameters.yml }
- { resource: security.yml }
framework:
#esi: ~
translator: { fallback: en_US }
secret: %secret%
router:
resource: "%kernel.root_dir%/config/routing.yml"
strict_requirements: "%kernel.debug%"
form: true
csrf_protection: true
security.yml:
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
login:
pattern: ^/user/(login|reset-request|send-email|check-email)$
provider: chain_provider
anonymous: true
main:
pattern: ^/
provider: chain_provider
form_login:
csrf_provider: form.csrf_provider
check_path: my_security_check
login_path: my_security_login
logout:
path: my_security_logout
remember_me:
key: %secret%
name: MYKEY
lifetime: 3600
anonymous: false
security_dev.yml:
firewalls:
main:
form_login:
check_path: my_security_check
login_path: my_security_login
目的是通过包含csrf_provider
来覆盖安全配置来取消设置security_test
:
config_dev.yml:
imports:
- { resource: config.yml }
- { resource: security_dev.yml }
我无法将csrf_provider
设置为null或false,因为SF2不会接受这些值。
但是,通过这种包含,关键始终存在。
所以问题可能更为笼统:如何完全覆盖包含另一个yaml的配置数组?
先谢谢,
JM
答案 0 :(得分:2)
这让我想知道您为什么要禁用CSRF进行开发,但如果您确定要这样做,那么实际上它很简单。只需覆盖config_dev.yml
:
framework:
# ...
csrf_protection: false