在 SF2 经典应用程序中,如何仅针对开发环境禁用表单登录 CSRF?
配置文件:
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
安全.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
目的是通过包含 security_test
的安全配置来取消设置 csrf_provider
:
config_dev.yml:
imports:
- { resource: config.yml }
- { resource: security_dev.yml }
我无法将 csrf_provider
设置为 null 或 false,因为 SF2 不接受这些值。
但有了这种包含, key 始终存在。
所以问题可能更笼统:我怎样才能用另一个 yaml 包含完全覆盖配置数组?
提前致谢
JM
最佳答案
这让我想知道为什么要禁用 CSRF 进行开发,但如果您确定要这样做,实际上做起来非常简单。只需覆盖 config_dev.yml
中的设置:
framework:
# ...
csrf_protection: false
关于symfony - 仅为 Symfony2 中的开发环境禁用 CSRF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33593614/