2014-09-13 53 views
0

我是Yii的新手,並且不熟悉Yii的RBAC功能。我的問題是,是否有可能使用RBAC對每個模型記錄的基礎如:Yii RBAC每個模型記錄的基礎

表Project_users:

| user_id | project_id | role | 
================================ 
| 1 |  1  | admin | 
--------------------------------- 
| 1 |  2  | member| 

在這種情況下,用戶1可以編輯項目1個,但不是項目2.我可以使用Yii中的RBAC功能在這裏用最少的配置,還是我需要創建我自己的過濾器代碼?

+0

你有沒有看到[在yii文檔中的帖子](http://www.yiiframework.com/wiki/136/getting-to-understand-hierarchical-rbac-scheme)? – 2014-09-13 10:36:03

+0

還沒有,謝謝你的鏈接。我會檢查它 – 2014-09-13 11:00:24

+0

只要閱讀它,但沒有什麼與我想要實現的相關。基本上,我想'Yii :: app() - > user-> checkAccess'從Model記錄中檢查,而不是從'users'表檢查。 – 2014-09-13 11:05:30

回答

0

我提供了一個類似的問題在這裏的響應:Yii RBAC: access to specific items/rows

這使您可以通過幾個步驟創建自定義過濾規則:

  1. 在過濾器中指定的「AccessControl的」標誌()重寫方法。
  2. 在你accessRules()方法,指定您的自定義函數的引用來進行訪問控制檢查
  3. 創建您的訪問控制功能來執行你的支票,並返回true或相應假指定是否訪問被允許或禁止。

您可以在鏈接問題中看到代碼示例。

+0

嗨crafter,我follwed鏈接到您的答案,但我不認爲它會檢查從用戶以外的表。我深入瞭解Yii的代碼,看起來我需要創建一個擴展'CDbAuthManager'或'CAuthManager'的新組件,並分配表名和重寫方法。 – 2014-09-14 07:48:47

+0

由於驗證發生在自定義方法中,因此您可以決定從哪個表讀取數據。 – crafter 2014-09-15 06:44:31