我正在使用Symfony2,並且我的用戶和角色已經存儲在我的數據庫中。如果我在security.yml
設置類似下面它的偉大工程:如何在數據庫中存儲Symfony2「access_control」信息?
access_control:
- { path: ^/admin, role: ROLE_ADMIN}
- { path: ^/users, role: ROLE_MANAGER}
但我想在數據庫中存儲此ACCESS_CONTROL信息,所以從我的系統,用戶可以通過管理界面更改權限本身。
我看着ACL和FOSUserBundle但無法找到一個解決方案。我發現我可以使用類似if ($user->hasRole($role))
的東西來檢查權限,但我需要在每個控制器中執行此操作。
有沒有一種方法來定義一個動態的「ACCESS_CONTROL」功能?也許像將access_control重定向到可能返回true或false的某個類。 任何解決方案?
謝謝,它工作完美! –
我沒有明白。我需要在角色層次結構中放置角色DB_ROLE_CHECK以及如何在Voter中檢查路由?例如,我有數據庫條目,如[路線,角色]。並在access_control規則^ /:DB_ROLE_CHECK,對不對?所以它會在每個請求上執行DBVoter。在$屬性中,我將有角色,然後是$ token。那麼我將有一個路線或路徑作爲$主題參數呢?所以我需要通過路徑獲取數據庫記錄,並在decisionManager中使用$ token中的$ user角色,對吧? –