我有这个PHP混合(程序和OOP)应用程序,我想创建一个RBAC。
我可以创建数据库表(权限,角色,用户等),我也可以在网上找到很多关于这个主题的文章,但它们似乎都缺少最重要的部分: 我们想要保护的“资源”。
Zend_ACL似乎没问题,但我的应用程序不是基于MVC框架的。
问题1 我想知道zend_acl是否松散耦合到足以使用,即使我的整个应用程序不是基于对象的。
问题2 如何在整个应用程序不是基于对象的情况下定义资源 ?
问题3 是否有任何好的非过时的白皮书可以让我在处理异构(程序和OOP)系统时创建基于角色的系统?
再次感谢
答案 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概念硬连接,我会感到惊讶。