访问控制和RBAC(基于角色的访问控制)在PHP Hybrid(procedural和OOO)应用程序中

时间:2011-11-23 15:46:10

标签: php

我有这个PHP混合(程序和OOP)应用程序,我想创建一个RBAC。

我可以创建数据库表(权限,角色,用户等),我也可以在网上找到很多关于这个主题的文章,但它们似乎都缺少最重要的部分: 我们想要保护的“资源”。

Zend_ACL似乎没问题,但我的应用程序不是基于MVC框架的。

问题1 我想知道zend_acl是否松散耦合到足以使用,即使我的整个应用程序不是基于对象的。

问题2 如何在整个应用程序不是基于对象的情况下定义资源

问题3 是否有任何好的非过时的白皮书可以让我在处理异构(程序和OOP)系统时创建基于角色的系统?

再次感谢

1 个答案:

答案 0 :(得分:0)

“资源”只是一个非常通用的抽象事物,在实践中它可以是任何东西。在结构良好的MVC体系结构中,此资源通常对应于类/方法名称,而类名称或方法名称又对应于URL。这和任何其他事情一样随意。即使在纯粹的过程PHP中,您也可以随意定义资源:

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

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

// do something that represents root.foo.bar

如果没有良好的OO结构,跟踪哪些代码代表哪些资源更难处理,但绝不是不可能的。如果脚本文件组织良好,您可以直接使用脚本的文件名。

我不能具体谈论Zend_ACL,但如果它与OO概念硬连接,我会感到惊讶。