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