2011-11-23 166 views
0

我有這個PHP混合(過程和OOP)應用程序,我想創建一個RBAC。訪問控制和RBAC(基於角色的訪問控制)在PHP混合(程序和OOO)應用程序

我可以創建數據庫表(權限,角色,用戶等),我也可以在網上找到很多關於該主題的文章,但他們似乎都缺少最重要的部分: 「資源」我們想要保護。

Zend_ACL似乎沒問題,但我的應用程序不是基於MVC框架的。

問題1 我想知道如果Zend_Acl是可鬆耦合就夠用了,即使我的整個應用程序不是基於對象的

問題2 如何定義當整個應用程序不是基於對象的資源

問題3 是否有良好的非過時白皮書在那裏,可以讓我創建一個基於角色的系統,具有異質性(程序和OOP)系統打交道時?

再次感謝

回答

0

「資源」只是一個非常普通的,抽象的東西,實際上它可以是任何東西。在結構良好的MVC體系結構中,此資源通常對應於類/方法名稱,而這些名稱又對應於URL。這和其他任何東西一樣隨心所欲。即使在純粹的程序PHP中,你可以任意定義資源:

$resource = 'root.foo.bar'; 
$user  = getCurrentUser(); 

if (!isAllowedToAccess($user, $resource)) { 
    exit; 
} 

// do something that represents root.foo.bar 

跟蹤哪些你的代碼代表什麼資源是很難沒有一個良好的面向對象結構的動作,但絕不是不可能的。如果組織良好,您可以簡單地通過腳本的文件名。

我不能說任何關於Zend_ACL的具體內容,但是如果它被硬連線到面向對象的概念,我會感到驚訝。