2014-09-03 61 views
0

在我的網站上,我有管理員有一堆角色。 我想限制對某些管理員的訪問權限,所以我要求在進入之前授予特定角色。管理員需要爲其分配「ROLE_REPORT」角色才能訪問/ report頁面。如何爲管理員分配一個額外的角色

這裏是我的代碼:

security: 
    role_hierarchy: 
     ROLE_REPORT : ROLE_USER 
     ROLE_MERCHANT: ROLE_USER 
     ROLE_VIRTUAL_TERMINAL: ROLE_MERCHANT 
     ROLE_ONLINE_CHECKOUT: ROLE_MERCHANT 
     ROLE_ADMIN:  [ROLE_MERCHANT, ROLE_VIRTUAL_TERMINAL, ROLE_ONLINE_CHECKOUT] 
     ROLE_SUPER_ADMIN: ROLE_ADMIN 

    access_control: 

     # Section Report 
     - { path: /report(.*), roles: ROLE_REPORT} 

出於某種原因,我的管理,當角色被授予,無法訪問該頁面。我認爲它與角色層次結構有關。

讓我知道,如果我能爲您提供更多的信息。

謝謝

+2

你嘗試註銷/重新登錄?角色不會自動刷新... – 2014-09-03 14:00:42

+0

@jperovic:它的工作原理。我感到跛腳張貼這個。發表您的評論作爲答案,以便我可以接受它! – Ebpo 2014-09-03 14:25:51

回答

1

默認情況下,你需要爲了新角色才能生效再次註銷/登錄。

但是,還有另一種選擇。根據安全性參考,有一個選項always_authenticate_before_granting,如果設置爲true,則會在每個請求上刷新令牌。 Symfony每次都會去數據庫刷新角色。

iamdto以實例提供的類似的答案和鏈接

0

你應該以這種方式添加一個新的角色,例如ROLE_ADMIN_REPORT和修改您的安全:

security: 
    role_hierarchy: 
     ROLE_REPORT : ROLE_USER 
     ROLE_MERCHANT: ROLE_USER 
     ROLE_VIRTUAL_TERMINAL: ROLE_MERCHANT 
     ROLE_ONLINE_CHECKOUT: ROLE_MERCHANT 
     ROLE_ADMIN:  [ROLE_MERCHANT, ROLE_VIRTUAL_TERMINAL, ROLE_ONLINE_CHECKOUT] 
     ROLE_ADMIN_REPORT: [ROLE_ADMIN, ROLE_REPORT] 
     ROLE_SUPER_ADMIN: ROLE_ADMIN 

access_control: 

    # Section Report 
    - { path: /report(.*), roles: ROLE_REPORT} 
相關問題