从访问控制列表中排除公共页面


Exclude public pages from access control list

我在Symfony2中有两个角色的应用程序:ROLE_ADMIN和ROLE_PARTNER。我也有一些公共页面。所有公共页面都以URL"/public/"开头。我想保护排除这些公共项目的所有应用程序。

我当前的配置:

access_control:
    - { path: /.*, role: ROLE_PARTNER|ROLE_ADMIN }
    - { path: /public/.*, role: IS_AUTHENTICATED_ANONYMOUSLY }

但它工作错误(循环重定向)。

更改订单:

access_control:
    - { path: ^/public/, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/, role: ROLE_PARTNER|ROLE_ADMIN }

第二种选择是完全关闭公共部分的安全:

firewalls:
    public:
        pattern: ^/public/
        security: false

添加:

- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }

请参阅中的"常见陷阱"http://symfony.com/doc/current/book/security.html#using-a-的传统登录