我正在研究一個Web應用程序,其中不同的用戶組對 資源有不同的訪問權限。到目前爲止,我猜想沒有什麼特別的,但有一個警告; 該應用程序分爲「域」,以便我們的每個客戶組織 都有自己的內容。在這裏,我使用一個更簡單的模型來說明我的問題。如何在ACL中表示不同的應用程序域?
每個域都有 相同的資源類型,但每個資源實例僅連接到一個域。 下面是它看起來就像一個域名:
Resources: stories, announcements
Roles:
guest // read only access
root // unlimited access
editor // like guest, but with r/w access to resource "stories"
admin // r/w access to both resources
我想出了兩種不同的方法來實現這個使用Zend_Acl中, 第一是簡單地使用不同的ACL爲不同的域,複製上述 爲每個域。二是隻使用一個ACL,並添加新的角色,每個域:
Domains: domain0, domain1, domain2
Roles:
guest
root
editor-domain0
editor-domain1
editor-domain2
admin-domain0
admin-domain1
admin-domain2
第二種方法的優點是用戶可以是一個域的管理員,同時 是另一個編輯器(實際上可能發生)。但它也有缺點 ,角色不是靜態的 - 我們需要每次添加或刪除域時生成。
這些方法中的任何一種都不錯,還是有更好的方法來處理多個域?
我已經使用了這個答案的變種;但是不是繼承Zend_Acl的子類,而是在另一個調用了Zend_Acl中相應方法的類中創建了具有相同簽名的實用程序方法。 – 2010-02-09 10:23:15