簡體   English   中英

Zend Acl - 模塊、控制器、動作和模型

[英]Zend Acl - Modules, Controllers, Actions and Models

我花了一天時間尋找有關如何在 SO 和其他站點中實現 Zend_Acl 的教程和答案。 而且我很頭疼。 :X

我看到人們使用它來允許或禁止訪問某些控制器/操作,而其他人則說這種方式是不正確的,應該允許或禁止基於模型的訪問。 嗯,第二個似乎可行,但是,這意味着對於每個 controller 我需要一個 model? 因為看起來,在第二種選擇之后,我只能在例如編輯帖子時阻止用戶訪問。 但我想阻止訪問編輯帖子的 controller 的操作。

如果我想阻止具有角色 X 的用戶訪問 controller Z 的操作 Y,如果我遵循第二種選擇,我該怎么做?

一個真正的應用程序的例子將非常受歡迎。

此信息可以改進您的答案:我使用 Doctrine 2 作為 ORM,並且我有一個模塊 Admin。 我的應用程序的實際結構是這樣的:

application
  - MYAPP
    - configs
    - controllers
    - layouts
    - views
    - library
       - MYAPP ;This folder is in the include path
    - modules
       - admin

我承認不是Zend_Acl專家,但對我來說,使用Zend_Acl的本質是識別角色、資源和權限。 角色通常很明顯。 一旦您清楚地確定了資源,特權通常就會變得明顯。

所以對我來說,關鍵是識別資源

在您的情況下,聽起來您已明確將controller標識為資源。 如果您需要更細粒度的訪問控制,則可以將權限定義為操作。 這似乎足夠靈活,以至於即使是不需要使用模型的控制器——也許應該只向特定類型的登錄用戶顯示的 static 頁面等——也可以受到 ACL 控制。

在某些情況下,您可能會發現您的資源/特權“自然地”對應於模型/方法。 但是,如果控制器/操作更符合您對程序流程和 ACL 要求的理解,我認為您不應該強迫您的 ACL 進入該范例。

不是真正直接回答您的問題。 更像是忠於您自己對情況的閱讀的建議。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM