2015-11-08 76 views
2

在SF2经典应用程序中,如何禁用仅用于开发环境的表单登录CSRF?禁用CSRF仅适用于Symfony2中的开发环境

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为空或假,因为SF2不会接受这些值。 但是,随着这个包容,关键始终存在。

所以这个问题可能会更一般:我如何完全覆盖配置数组与另一个yaml包含?

由于通过提前

JM

回答

2

这让我不知道为什么会要禁用CSRF的发展,但如果你确定要做到这一点,它实际上是非常简单的事情。只是覆盖该设置在config_dev.yml

framework: 
    # ... 
    csrf_protection: false 
+0

我真正需要的是禁用CSRF为我的测试环境,因为试机的时候是超载了我的一些贝哈特功能失败,因为CSRF的,我想在我的问题更简单)。您的解决方案是禁用整个应用程序的CSRF,而不是唯一的登录表单,但我会试一试。谢谢。 – jmleroux

+0

你的问题是*在一个SF2的经典应用程序中,如何禁用仅用于开发环境的表单登录CSRF?*没有关于登录表单的信息。 ;) –

+0

也许标题不够清楚。我想在“防火墙”部分“取消”登录表单的配置键“crsf_provider” – jmleroux

相关问题