【问题标题】:Open source ORM with access control for PHP带有 PHP 访问控制的开源 ORM
【发布时间】:2011-07-30 23:11:36
【问题描述】:

我有许多项目(有些是商业的,有些不是),其中需要现场和资源级别的访问权限。当然,使用 ORM 项目并为其做出贡献会更好,而不是重新发明轮子,但我无法找到具有任何类型访问控制层的项目;似乎它们中的大多数都将其留给领域对象,而这些类不能从超类继承。

也许可以分叉 Doctrine ——但同样,我不想单独潜水。

【问题讨论】:

    标签: php orm access-control


    【解决方案1】:

    我作为 ORM 的选择一直是Propel (v1.5),我发现它更轻、更快、更容易理解。它还具有自定义行为,这可能是访问控制插件的开始阶段,至少对于资源而言是这样。

    你可以看到一些关于行为here 的文档,this wiki 很好地解释了如何构建自己的行为。

    希望能帮到你

    【讨论】:

    • 我还查看了 propel(实际上仍在阅读源代码),但它与 Doctrine 相比没有解决访问控制问题,并且需要 Zend 框架——如果你需要添加一个沉重的部分已经在域方面致力于其他一些框架。
    • 您在哪里发现 Propel 需要 Zend 框架? AFAIK 事实并非如此。
    【解决方案2】:

    为用户访问控制创建一个数据库结构,并构建使定义的规则生效的代码,不是 ORM 的工作(它会帮助你做这件事,但它不会为你做这件事)。

    但是这种访问控制的需求很频繁(命名为ACLRBAC;看来你在找ACL),而且已经出现了一些项目,它为此创建了所有数据库结构,例如 sfGuard (Symfony) 或 Zend_ACL (Zend Framework)。

    也检查那些 SO 线程:

    【讨论】:

    • 我们要做的比 RBAC 更细粒度,我看不出如何将它与 ORM 分开的原因是字段级别的访问控制需要工作,无论是域对象被加载到工作模型中,或者某些字段被加载到自定义查询/映射中。
    • 由于我们处理大量敏感数据,内部控制要求我们不允许一个人访问某些组合,因此 ORM 是唯一一个既足够低又可以在字段中强制执行访问控制的东西级别,但足够高以理解对实际资源的影响(主要是与域对象一对一)。
    • 对不起,我完全忽略了您问题中的“字段-”访问控制要求......经过一些谷歌搜索后,我没有发现任何有趣的东西已经存在。您应该尝试一下 David Conde 回答的“推进行为”想法(因为您不必“分叉”推进,即使在将代码添加为行为之后,您仍然可以升级它)。
    猜你喜欢
    • 2021-07-27
    • 2018-02-14
    • 2016-03-28
    • 1970-01-01
    • 2020-03-15
    • 2020-09-27
    • 2011-05-12
    • 2018-10-18
    • 2017-07-21
    相关资源
    最近更新 更多