基于角色的访问控制

时间:2008-09-22 07:04:12

标签: php codeigniter access-control

是否有可用于PHP based的开源CodeIgniter基于角色的访问控制系统?

11 个答案:

答案 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系统来使用它们并进行管理。但你可以白化你的功能。