使用 Doctrine 构建通用的 OO ACL

发布于 2024-09-10 10:52:58 字数 463 浏览 2 评论 0原文

我正在寻求设计一个以学说为基础的 ACL 系统供我自己使用,尽管我在一些最初的设计考虑因素上遇到了困难。

现在,我正在考虑根据类和唯一标识符来制作它,将它们存储在表中:

Table: ACL
    ResourceClass
    ResourceKey
    RoleClass
    RoleKey
    Permission

显然,这将要求我对正在查询的类进行内省,以派生正确的 ResourceClass 值。

我想知道这种方法以前是否已经做过,或者是否有人对以更好的方式做到这一点有一些建议。其他诸如角色之间的递归关系之类的事情也让我感到困惑,因为我不确定如何递归查询来构建资源和 ACL。

我不是 Zend ACL 的忠实粉丝,所以请不要提出任何建议 - 我知道这一点!

这个问题将在大家的参与下进一步澄清,还请耐心等待!这个问题本身可能需要几次迭代! ;)

I'm looking to design a doctrine-backed ACL system for my own use, although I'm struggling with some of the initial design considerations.

Right now I'm looking at making it based on classes and unique identifiers, storing them in a table as such:

Table: ACL
    ResourceClass
    ResourceKey
    RoleClass
    RoleKey
    Permission

Obviously this is going to demand that I introspect on classes that are being queried to derive the correct ResourceClass values.

I'm wondering if this approach has been done before or if anyone has some advice with doing it in a bettery way. Other things like recursive relationships between Roles also confound me as I'm not sure how to recursively query to build and ACL for a Resource.

I'm not a huge fan of Zend ACL, so please no suggestions for it - I am aware of it!

Further clarifications will be made to this question as people weigh in, so please bear with me! This question itself may require a few iterations! ;)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

两仪 2024-09-17 10:52:58

我使用 NestedSet 来存储 ACL 层次结构和缓存以加快速度。

PHP 的 Doctrine ORM - NestedSet

这是一篇可能也有用的帖子:

Zend_Acl 第 3 部分:创建和存储动态 ACL | CodeUtopia - Jani Hartikainen 的博客

(也可以看看前面的两部分)。

I use NestedSet for storing the ACL hierarchy and cache to speed things up.

Doctrine ORM for PHP - NestedSet

Here is a post which may be useful too:

Zend_Acl part 3: creating and storing dynamic ACLs | CodeUtopia - The blog of Jani Hartikainen

(take a look at the two previous parts as well).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文