2012-09-03 56 views
3

我在Symfony2中有2個角色的應用程序:ROLE_ADMIN和ROLE_PARTNER。另外我有一些公共頁面。所有公開頁面都以URL「/ public /」開頭。我想保護所有不包含這些公共項目的應用程序。從訪問控制列表中排除公共頁面

我目前的配置:

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

但它的工作原理錯誤(​​循環重定向)。

回答

7

更改順序:

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

第二個選項是徹底關閉安全對公衆部分:

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

你幫助我@Carlos Granados – pltvs

+0

這個解決方案可能是最清晰的。有一點需要記住,在我的情況下,安全區域是'^ /',我不得不排除'^/api'。我必須在整個'^ /'定義之前列出'^/api'定義才能使其工作。 – Luke