2016-07-27 103 views
2

這裏是場景: 我有一個ROLE_READER任何人都可以訪問的頁面列表。 但是,某些特定的書籍不應該被某些讀者讀取或讀取(即使使用ROLE_READER)。使用Symfony-ACL實現塊列表

另一個角色(如ROLE_SPECIAL_READER)的創建不便於用戶使用,因此不是一個選項。

因此,我認爲我們需要某種黑名單控制。 我的問題是: - 使用Symfony-ACL可以實現嗎? - 如果是的話,那我們該怎麼做?

感謝和最好的問候。

回答

1

這是一個簡單的使用案例,我建議您使用Voter而不是ACL,因爲document表明它可能矯枉過正這種用例。

如果您使用的是選民,您可以write your custom voter您可以訪問User對象以及Page對象,並且您可以決定哪些用戶有權限,哪些用戶沒有權限。

在內部,ACL使用它自己的選民來檢查權限。它還有另一個層,用於根據實體(ROLE,USER,OBJECT)將權限存儲到數據庫中,並在需要時進行提取。

從我個人的經驗(doc也是這樣),ACL是一點點複雜的處理。

更多的利益使用的選民:

  1. 您可以創建多個Voter按項目分類/要求,
  2. 以後,如果你正在改變你的頭腦使用ACL,你不必改變代碼在控制器中。
  3. 易調試,重量輕。

希望它可以幫助你。

+0

這不是一個簡單的用例,這是一個更復雜的問題,因爲管理員必須選擇從哪個用戶或哪組用戶中排除哪個頁面。這是ACL的確切用例,不是嗎? –

+0

是的,ACL可以做到這一點。當管理員與用戶選擇頁面權限時,您需要相應地創建ACL「view」maskBuilder。 – Jeet

+0

那麼,我們如何滿足ROLE可以訪問的情況,但即使它們具有完全相同的角色,一些用戶也被拒絕訪問? –