2014-02-28 27 views
0

我閱讀了這個頁面關於Symfony securitySymfony access_control by role

但我不能使用access_control。我有兩條路線返回和儀表板。返回僅適用於ROLE_SUPER_ADMIN,並且要轉到儀表板,用戶必須經過身份驗證。

匿名用戶可以去任何地方和ROLE_USER可以去背(僅限超級管理員)

這是我的文件security.yml

security: 
encoders: 
    FOS\UserBundle\Model\UserInterface: sha512 

role_hierarchy: 
    ROLE_ADMIN:  ROLE_USER 
    ROLE_SUPER_ADMIN: ROLE_ADMIN 

providers: 
    fos_userbundle: 
     id: fos_user.user_provider.username 

firewalls: 
    main: 
     pattern: ^/ 
     form_login: 
      provider: fos_userbundle 
      csrf_provider: form.csrf_provider 
     logout:  true 
     anonymous: true 

access_control: 
    - { path: ^/, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/dashboard, roles: ROLE_USER } 
    - { path: ^/back, roles: ROLE_ADMIN } 

感謝您的幫助

回答

2

當然匿名用戶可以到處去!看看你的第一條規則

access_control: 
    - { path: ^/, role: IS_AUTHENTICATED_ANONYMOUSLY } 

即使/back路徑規則似乎正確地採取行動,因爲你打第一access_control規則給予行動

更快的解決方案:儘量反轉您的規則排序

更好的解決方案:嘗試寫更好(少一般)規則,如果您的應用程序讓你這麼做]