基于角色的访问控制

问题描述:

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

布兰登萨维奇介绍了他的PHP包“ApplicationACL”可能会或可能不会完成基于角色的访问演示。 PHPGACL也可能工作,但我无法确定地告诉你。我可以告诉你的是,Zend Framework的Zend_ACL组件将执行基于角色的设置(不过,你必须继承子类以便一次检查多个角色)。承认这样做的痛苦是你必须从整体下载(或SVN签出)中取出Zend_ACL,我不相信它有任何外部依赖关系。

Zend_ACL的好处在于它的存储不可知。您可以重新构建它,也可以将其设计为序列化(我使用两者的组合,为缓存序列化并从数据库重建)。

+1

罗伯特:这个答案是太旧,最好不要跟进,即使链接仍然工作 – dcousineau 2015-10-01 17:11:34

phpgacl http://phpgacl.sourceforge.net/是一个通用的基于ACL访问控制框架

虽然我不知道任何CI具体实施做的,我知道,你只需要在主类文件进行phpgacl工作。所以我相信与CI的整合不会有任何问题。 (我的工作passingly与CI)

发现了Khaos ACL这是一个CI图书馆......我还检查了phpgacl以及如何使用它的CI ... Have'nt检查Zend的ACL呢。但也许它可以“移植”到CI

也许我误解的问题,而不是基于角色的访问控制(RBAC)以整点避免访问控制列表(ACL)?

RBAC不同的访问控制列表(ACL)(...),它赋予权限具体操作与意义的组织,而不是低级别的数据对象。例如,可以使用访问控制列表来授予或拒绝对特定系统文件的写入访问权限,但是不会说可以更改哪种文件。在基于RBAC的系统中,操作可能是在金融应用程序中创建“信用账户”交易(...)。执行特定操作的权限分配是有意义的,因为这些操作是精细的,并且它们本身在应用程序中有意义。 (引用:Wikipedia

我不知道在Zend_Acl里或提及其他实现细节,但如果是基于ACL,我不建议将其用于基于角色的授权。

+0

jframework RBAC那么它的建议吗? – AbiusX 2013-02-15 19:03:59

+0

我也有相同的意见,这个问题接受了错误的答案.. ACL和RBAC差别很大,一个ACL解决方案被接受的RBAC问题.. – 2014-08-13 11:37:02

+0

Pedantry:“我不会建议使用他们的基于角色身份验证“。访问控制!=认证是的,更重要的是ACL!= RBAC^_^ – 2015-04-09 19:10:57

试用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(Deadlink中)

jFramework具有标准NIST级别2 RBAC与被认为是最快的可用的增强(包括基准),它可以在一个单一的SQLite数据库文件中操作并且彻底的测试,像手套一样工作。

对jFramework DBAL有依赖性,但是可以用代码中的DBAL简单地替换DBAL SQL查询,当然你也可以以SOP方式使用jFramework。

我创建了一个名为PHP-Bouncer的开源项目,这可能会对您感兴趣。它还相当年轻,但运行良好,易于配置。我最终开发了它,因为现有的解决方案都不符合我的需求。我希望这有帮助!

Ion Auth Library使用用户和组 - https://github.com/benedmunds/CodeIgniter-Ion-Auth 但是没有可用的RBAC系统来使用它们并进行管理。但是你可以白色的功能。

我知道的线索是冷的,但一个新的项目已弹出:

PHP-RBAC是基于访问控制的PHP分层NIST 2级标准的作用,是非常成熟的。这也是一个OWASP项目。

我希望你在http://phprbac.net

享受以下是PHP我发现了两个RBAC库:

我实际使用中PolyAuth的第一个:https://github.com/Polycademy/PolyAuth/

这是一个包含NIST级别1 RBAC的全功能auth库。是的,RBAC与ACL不同。我也使用Codeigniter,你所要做的就是使用PDO驱动程序并传入连接ID。请参见本教程如何做到这一点:http://codebyjeff.com/blog/2013/03/codeigniter-with-pdo