生产服务器上忽略Symfony2子域防火墙

时间:2014-12-13 14:35:33

标签: security symfony subdomain firewall

部署新网站后,我遇到了一个非常奇怪的问题。

该网站使用登录后的shop.domain.tld。在 security.yml 中,我在防火墙和access_control list中定义了一个主机参数。

本地(Vagrant)它运行良好,但在线防火墙似乎被忽略了。

firewalls:
    admin_secured_area:
        pattern: ^/admin
        anonymous: ~
        form_login:
            login_path: admin_login
            check_path: admin_authenticate
            provider: entity_admin
        logout:
            path: admin_logout
            target: /admin

    shop_secured_area:
        pattern: ^/
        host: .%domain%
        anonymous: ~
        form_login:
            login_path: homa_shop_login
            check_path: shop_authenticate
            provider: entity_user
        logout:
            path: shop_logout
            target: /

    validate:
        pattern: ^/validate
        security: false


access_control:
    - { path: ^/admin/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/admin, roles: ROLE_ADMIN }
    - { path: ^/_wdt, roles: 'IS_AUTHENTICATED_ANONYMOUSLY' }
    - { host: .%domain%, path:^/nl/contact, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { host: .%domain%, path:^/cart/quantity, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { host: .%domain%, path:^/validate, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { host: .%domain%, path:^/register, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { host: .%domain%, path:^/register/newcontact, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { host: .%domain%, path:^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { host: .%domain%, path:^/forgot/password, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { host: .%domain%, path:^/, roles: ROLE_USER }

%domain% parameters.yml 中设置为domain.tld

子域上的路由按预期工作,只忽略防火墙。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

  

该网站使用shop.domain.tld

     

%domain% parameters.yml 中设置为domain.tld

您不应该将%domain%定义为"shop.domain.tld"吗?

或者您应该尝试在.之前移除%domain%(点),因为根据this answerofficial documentation,点不是必需的。