2011-07-08 58 views
0

當使用Zend_Acl,只有一個特定的模塊/控制器/行動的權限檢查...現在,當我有頁面的自定義網址,並非所有頁面都有自己的mdouel/controller/action 。我希望人們看到一些頁面,但不是全部,Zend_Acl沒有辦法做到這一點,對嗎? 所以我應該爲這些頁面創建一個新的權限系統?權限的行動和頁面

回答

0

因此,檢查所有控制器操作的權限:

$this->allow('userGroup', 'controller'); 
那樣

僅僅並且專門代替檢查的權限,以單個控制器的動作:

$this->allow('userGroup', 'controller', 'action'); 

我希望簽出幫助

+0

所有頁面都有相同的模塊/控制器/操作,但在一個頁面中加載了多個操作(小部件)。所以控制器/動作的權限很簡單,而且很有效,但是我很困惑如何在頁面級別執行它 – koko

+0

我不明白爲什麼所有頁面都使用相同的控制器和相同的動作! :S – JellyBelly

+0

頁面是小部件的集合。因此,必須呈現頁面,並且必須將所有小部件轉換爲正確的HTML代碼。所有的小部件都有自己的模塊/控制器/操作(作爲正常的zend請求)。要處理所有小部件,請求必須通過1個操作來處​​理。 – koko

1

Zend_Acl將處理您訪問控制所需的一切。你的工作是定義資源和特權。這意味着您可以爲任何請求添加權限。聽起來好像你有一個ACL算法,你從ZF手冊或其他在線的地方複製而來,你試圖堅持這一點,就好像它是一個標準。 Zend_Acl從不說你必須堅持自己的方法。

現在,你的問題。因爲每個頁面都有相同的module/controller/action,所以應該將其視爲一個資源,然後可以根據您提到的自定義URL的參數定義頁面級特權。

簡單地說,你可以這樣做:

$acl->allow('role', 'Module:Controller:Action', array('UrlParams')); 

不要忘記,Zend_Acl::allow的基礎不是基於module/controller/action資源和特權。如下所示:

$acl->allow('role','resource',array('privileges'));