【问题标题】:What's a good PHP permission framework that allows listing resources?什么是允许列出资源的好 PHP 权限框架?
【发布时间】:2012-01-20 15:42:55
【问题描述】:

我正在构建一个新应用程序,我需要一个权限框架来配合它。 以下是我们需要它支持的一项内容的简单示例:

使用数据模型:

user
----
id
role
type

resource
----
id
name
type

我们希望能够设置一个访问规则,规定用户只能知道与他们具有相同类型的所有资源,除非他们具有管理员角色(在这种情况下,他们可以看到所有内容)。然后我们希望能够提取“该用户知道的所有资源”的可搜索/可分页列表。 (假设有 500,000 个资源。)

我试图将它硬塞到 Zend_acl 中,但是虽然我认为我可以在 zend_acl 中定义所有规则,但它是在逐个资源的基础上进行的,并且没有适当的支持来获取 列表 em> 的资源,当然不是以内存友好的方式(例如一次显示 10 个资源并分页)。

那么,什么是支持诸如此类的基于关系的规则(而不是列表)的良好 PHP 权限框架?

【问题讨论】:

  • 我反对,因为我认为 ACL 不能满足我的需求。除非我错过了将其固定在其中的方法,否则我需要一个基于规则的系统而不是基于离散列表的系统。我愿意接受有关如何在诸如 zend_acl 之类的 ACL 中实现目标的建议。 :)

标签: php frameworks roles acl


【解决方案1】:

您可能仍然可以使用 ACL,前提是它可以扩展以满足您的目的。例如,Zend_Acl 允许您使用write your own ACL assertions 来覆盖基于资源的行为。您还可以扩展 Zend_Acl 以提供该用户可用的所有资源的列表。

【讨论】:

  • 我们的目标是摆脱硬编码权限规则,而是将它们定义在用户可修改的系统中,例如数据库。我想我可以通过基于 ACL 权限运行特定硬编码检查的断言来设计一些东西,但听起来仍然需要进行相当多的计划,我宁愿依赖一个经过良好测试的框架.
  • 抱歉,圣诞假期让我分心了。重读这篇文章,我不相信 zend_acl 回答了我的基本问题。如何LIST 满足特定断言的资源?我当然不会加载所有资源,然后对每个资源运行 ACL 检查以构建该列表。您提到扩展 Zend_Acl,但我找不到任何有关方法的提示,所以我的问题仍未得到解答。
  • 我们在 Zend_Acl 的扩展中有这个能力。 ACL 在数据库中维护。当需要列表时,我们去查询数据库。虽然我看到这不能回答你原来的问题;我们必须实现您需要的功能。
猜你喜欢
  • 1970-01-01
  • 2010-12-20
  • 1970-01-01
  • 2021-08-16
  • 2020-10-06
  • 2012-05-11
  • 2013-05-21
  • 2021-08-02
  • 1970-01-01
相关资源
最近更新 更多