有哪些允许列出资源的好的PHP权限框架?

3

我正在开发一个新应用程序,需要一个权限框架来支持它。以下是一个我们需要支持的示例:

使用数据模型:

user
----
id
role
type

resource
----
id
name
type

我们希望能够设置一个访问规则,即用户只能了解与他们相同类型的所有资源,除非他们拥有管理员角色(在这种情况下,他们可以查看所有内容)。然后,我们希望能够获取“此用户知道的所有资源”的可搜索/可分页列表。(假设有500,000个资源。)
我尝试将其塞入Zend_acl中,但是虽然我认为我可以在zend_acl中定义所有规则,但它是基于每个资源的,没有适当的支持以内存友好的方式获取资源列表(例如一次显示10个资源并进行分页)。
那么,有哪些良好的PHP权限框架支持基于关系的规则(而不是列表),例如这些规则?

可能是 http://stackoverflow.com/questions/370371/recommend-a-php-acl-class 的重复问题。 - cmbuckley
我认为不行,因为我相信 ACL 不能满足我的需求。除非我错过了一种方法可以将其塞进去,否则我需要一个基于规则的系统而不是基于离散列表的系统。我很乐意听取在 ACL 中实现我的目标的建议,例如 zend_acl。 :) - VexedPanda
1个回答

3

如果可以扩展ACL以适应您的目的,您仍然可以使用ACL。例如,Zend_Acl允许您编写自己的ACL断言,可用于覆盖基于资源的行为。您还可以扩展Zend_Acl以提供该用户可以访问的所有资源列表。


目标是摆脱硬编码的权限规则,而是将它们定义在用户可修改的系统中,例如数据库。我想我可以通过断言设计一些东西,运行基于ACL权限的特定硬编码检查,但这似乎仍需要进行相当多的计划,我宁愿依赖于经过充分测试的框架。 - VexedPanda
抱歉,圣诞假期让我分心了。重新阅读后,我不认为zend_acl回答了我的基本问题。我该如何列出符合特定断言的资源?我肯定不会加载所有资源,然后对每个资源运行ACL检查以构建该列表。您提到扩展Zend_Acl,但我无法找到任何关于方法的提示,因此我的问题仍未得到解答。 - VexedPanda
我们的Zend_Acl扩展具备这种能力。ACL存储在数据库中。当需要进行列表查询时,我们会去查询数据库。虽然我看到这并没有回答你最初的问题;但我们必须实现您所需的功能。 - cmbuckley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接