站点根目录的Symfony访问控制

时间:2014-01-09 12:40:10

标签: php symfony firewall access-control

我创建了一个带防火墙访问控制的站点,强制用户登录以访问任何内容,例如

 - { path: ^/, roles: IS_AUTHENTICATED_FULLY}

现在,客户希望在网站的根目录上有一个启动页面,即www.sitename.com。

我已将此页面映射到DefaultController::indexAction,但我无法弄清楚如何允许IS_AUTHENTICATED_ANONYMOUSLY访问此页面,因为没有路径名称即www.sitename.com/splash-page来挂起访问控制

我甚至可以这样做吗?

1 个答案:

答案 0 :(得分:13)

您可以保护除主页网址之外的所有网址:

# app/config/security.yml file
security:
    ...
    access_control:
        # Logged in
        - { path: ^/(.+), roles: IS_AUTHENTICATED_FULLY }
        # no authentication for the homepage:
        - { path: ^/$, roles: IS_AUTHENTICATED_ANONYMOUSLY }

正则表达式^/(.+)将匹配每个网址,而不是包含/之后的内容。

正则表达式^/$将匹配网址,而不是在/之后不包含任何内容(/是字符串的结尾)。

主页网址必须在routing.yml文件中声明:

homepage:
    pattern: /
    defaults: { _controller: ACMEBundle:Default:homepage }