仅对Symfony2中的dev env禁用CSRF

时间:2015-11-08 11:51:06

标签: symfony yaml

在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

1 个答案:

答案 0 :(得分:2)

这让我想知道您为什么要禁用CSRF进行开发,但如果您确定要这样做,那么实际上它很简单。只需覆盖config_dev.yml

中的设置即可
framework:
    # ...
    csrf_protection: false