2010-10-08 66 views
2

管理對控制器操作訪問的傳統方法是爲每個/ module/controller/action創建資源(字符串標識符),然後檢查控制器插件中的ACL。基於資源的ACL vs基於控制器的ACL

最近我發現非常方便Zend_Acl_Resource_Interface,它可以用來控制訪問任何類實現它。這樣,任何模型,表單或其他應用程序元素都可能成爲ACL資源。這是相當常識的方法,因爲這樣應用程序資源就成爲ACL資源。

對於Doctrine監聽器來說,這變得非常容易,所以我根本不需要任何額外的邏輯控制器。

現在,我可以檢查ACL例如每當任何表單被實例化並最終重定向到登錄頁面時。
但我怎樣才能隱藏使用受限制的形式,模型等Zend導航項目
我是否還需要傳統的,面向控制器的方法?我是否需要爲每個導航元素使用單獨的資源標識符?然後使用基於資源的ACL有什麼好處?

回答

2

您可以將相應的資源ID分配給Zend_Navigation頁面項目,將預定義的ACL和當前登錄用戶的角色設置爲Zend_Navigation實例,導航助手在渲染前檢查ACL。請看這裏的例子http://framework.zend.com/manual/en/zend.view.helpers.html#zend.view.helpers.initial.navigation.acl

+0

謝謝,但你應該仔細閱讀這個問題。考慮以下情況:我有一個帶有兩種形式(例如搜索和創建)的頁面*/create *,它們的資源標識符* seach-resource *和* create-resource *。我應該在導航中使用哪一個?我仍然需要爲url訪問創建新資源... – takeshin 2010-10-09 06:25:39

+0

是的,我忽略了一些情況。 – ngsiolei 2010-10-10 00:05:01