2015-02-10 113 views
0

如何使用zfc rbac角色提供程序?什麼是角色提供者?

我知道警衛阻止用戶訪問路線,但它似乎也需要角色提供者。這些數據庫權限?在下面的例子中,'article'是一個控制器,''後面是部分。該控制器授予的許可?我怎樣才能測試一次到位?非常感謝。

return [ 
    'zfc_rbac' => [ 
     'role_provider' => [ 
      'ZfcRbac\Role\InMemoryRoleProvider' => [ 
       'admin' => [ 
        'permissions' => [ 
         'article.delete', 
         'article.edit', 
         'article.archive', 
         'article.read' 
        ] 
       ], 
       'member' => [ 
        'permissions' => [ 
         'article.edit', 
         'article.archive', 
         'article.read' 
        ] 
       ], 
       'guest' => [ 
        'permissions' => ['article.read'] 
       ] 
      ] 
     ] 
    ] 
]; 

回答

0

Here you can read about role providers

在ZF-RBAC一個身份可以有不同的權限/特權不同的角色。要收集authorizationService的角色,您需要角色提供者。他們將包括一個RoleProvicerInterface (link)getRoles方法,該方法應該返回授權服務必須處理的角色。

每個標識都有一個IdentityInterface (link),它也有一個getRoles方法。這將返回一個roleNames的數組,該數組將被映射到來自RolesProvider的角色以查找有關權限/特權的信息。

然後,您可以找出當前用戶(標識)允許執行的操作。

+0

我瞭解角色並設置了我的警戒阻滯劑(基於我在數據庫中設置的用戶角色)。在我目前的情況下,每個用戶都有一個角色,並且我爲每個角色類型開發了模塊。它目前作爲'foo角色'不能訪問'bar模塊'。然而,當重新閱讀文檔時,似乎我需要角色提供者以及防守阻擋者。你可以擴展上面的語法嗎? '文章'是控制者還是行動? – Matt 2015-02-11 15:30:18

+0

還是這些基本的權限?例如,如果guest有'article.read',它們只能從數據庫中讀取,並且不能寫入或編輯記錄? – Matt 2015-02-11 15:39:24

+0

@Matt我認爲這是完全取決於你是否權限映射到控制器或行動或任何。在這種情況下,我認爲這個例子是針對資源控制器('article')和控制器內部的動作('delete','edit','archive'和'read')。 – Wilt 2015-02-11 15:53:53