是否有任何开源的、PHP based
基于角色的访问控制系统可用于CodeIgniter
?
11 回答
也许我误解了这个问题,但基于角色的访问控制 (RBAC) 的重点不就是避免访问控制列表 (ACL) 吗?
RBAC 与访问控制列表 (ACL) (...) 的不同之处在于,它将权限分配给在组织中有意义的特定操作,而不是分配给低级数据对象。例如,访问控制列表可用于授予或拒绝对特定系统文件的写访问权限,但它不会说明可以以何种方式更改该文件。在基于 RBAC 的系统中,操作可能是在金融应用程序中创建“信用账户”交易 (...)。分配执行特定操作的权限是有意义的,因为这些操作是细粒度的,并且它们本身在应用程序中具有意义。 (引用:维基百科)
我不知道 Zend_ACL 或提到的其他实现的细节,但如果它们是基于 ACL 的,我不建议将它们用于基于角色的授权。
Brandon Savage 介绍了他的 PHP 包“ ApplicationACL ”,它可能会也可能不会完成基于角色的访问。PHPGACL可能也可以,但我不能肯定地告诉你。
然而,我可以告诉您的是,Zend 框架的Zend_ACL组件将执行基于角色的设置(但是您必须进行子类化才能同时检查多个角色)。当然,这样做的痛苦是您必须从整体下载(或 SVN 结帐)中提取 Zend_ACL,我不相信它有任何外部依赖项。
Zend_ACL 的好处在于它与存储无关。您可以每次都重新构建它,也可以将其设计为序列化(我将两者结合使用,为缓存序列化并从数据库重新构建)。
我创建了一个名为PHP-Bouncer的开源项目,您可能会感兴趣。它还很年轻,但运行良好且易于配置。我最终开发了它,因为现有的解决方案似乎都不能满足我的需求。我希望这有帮助!
phpgacl http://phpgacl.sourceforge.net/是一个通用的基于acl的访问控制框架
虽然我不知道任何 CI 特定实现,但我知道您只需要主类文件即可使 phpgacl 工作。所以我相信与 CI 的集成不会有任何问题。(我曾与 CI 合作过)
这是我发现的两个 PHP RBAC 库:
我实际上在 PolyAuth 中使用了第一个:https ://github.com/Polycademy/PolyAuth/
它是一个功能齐全的身份验证库,包括 NIST 1 级 RBAC。是的,RBAC 与 ACL 不同。我也使用 Codeigniter,您所要做的就是使用 PDO 驱动程序并传入连接 ID。请参阅本教程了解如何做到这一点:http ://codebyjeff.com/blog/2013/03/codeigniter-with-pdo
发现了关于 Khaos ACL 这是一个 CI 库...我也在检查 phpgacl 以及如何将它用于 CI...还没有检查 Zend ACL。但也许它可以“移植”到 CI
试试 CodeIgniter 的 DX_Auth 插件。我正在研究 DX_Auth 具有的类似(而不是超集)功能。我的 CI 插件集包括菜单显示(可以通过 CSS 控制)、在调用控制器之前基于角色的访问控制和其他功能。我希望尽快发布它。当我这样做时会给出项目 URL
RBAC != ACL - Roland 有这个问题的唯一正确答案。
顺便说一句,当然它是实现任何类型的权限系统的框架的重要组成部分——至少使用框架没有意义,如果它没有给你一个设计良好的 RBAC 系统——使用简单的模板可能会更好然后使用任何 ORM 层的系统。
这是 php 世界中常见的反模式,像 Ruby 或 Django 这样的框架被“克隆”只是作为这些现代框架提供的一个子集 - 作为一个典型的综合症,你会看到这些框架中缺乏良好的 ACL 或 RBAC 集成 - 什么本质上是一个笑话。目前只有 Yii PHP 框架带有一个不错的 RBAC 实现。
http://www.jframework.info(死链接)
jFramework 有一个标准的 NIST 2 级 RBAC,具有增强功能,据说是最快的(包括基准测试)它可以在单个 SQLite 数据库文件上运行并经过彻底测试,就像手套一样工作。
依赖于 jFramework DBAL,但您可以简单地将代码中的 DBAL SQL 查询替换为您想要的 DBAL,当然您可以以 SOP 方式使用 jFramework。
我知道这条路很冷,但是突然出现了一个新项目:
PHP-RBAC 是 PHP Hierarchical NIST Level 2 标准基于角色的访问控制,非常成熟。它也是一个 OWASP 项目。
我希望你喜欢它在http://phprbac.net
Ion Auth Library 使用用户和组 - https://github.com/benedmunds/CodeIgniter-Ion-Auth 但没有可用的 RBAC 系统来使用和管理它们。但是你可以把你的函数变白。