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

Posted

技术标签:

【中文标题】Symfony2 子域防火墙在生产服务器上被忽略【英文标题】:Symfony2 subdomain firewall ignored on production server 【发布时间】:2015-02-12 03:01:11 【问题描述】:

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

该站点使用登录后的 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

子域上的路由正常工作,只有防火墙被忽略。

有什么想法吗?

【问题讨论】:

%domain% 是如何定义的? (只是检查声明没有错误) 【参考方案1】:

该网站使用 shop.domain.tld

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

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

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

【讨论】:

感谢您的回答。但不要改变任何我害怕的东西。

以上是关于Symfony2 子域防火墙在生产服务器上被忽略的主要内容,如果未能解决你的问题,请参考以下文章

在 Symfony2 路由中,如何设置可选的子域

所有子域的 Symfony2 会话

CNware防DDOS攻击介绍

CNware防DDOS攻击介绍--云宏

Symfony2 中的多个动态防火墙和 CAS 服务器

UIKeyboardTypeNumbersAndPunctuation 在具有安全文本输入的 UITextField 上被忽略