根据Symfony2中的自定义选民制作特定用户可访问的Doctrine实体列表

时间:2013-06-21 11:49:06

标签: php symfony doctrine-orm

情况:我的应用程序处理用户可能访问或可能无权访问的Doctrine实体。特定用户是否可以为特定目的访问特定实体由自定义Voter对象决定(决定用户是否具有访问权限的过程相当复杂)。

问题:我需要向用户显示他有权访问的Doctrine实体列表。可能这个列表需要分页。由于决定用户是否可以访问实体的复杂性,为此创建单个DQL / SQL查询几乎是不可能的(或者至少非常棘手)。

问题:有没有更好的方法来构建此列表,而不仅仅是从数据库中获取所有实体,循环它们,并询问security.context是否有实体访问权限(添加授予数组访问权限的每个实体,直到我构建了一个包含足够实体的数组来填充页面?在询问实体清单的原则时,我可以以某种方式考虑选民吗?

1 个答案:

答案 0 :(得分:1)

这就是ACL的意思。

请阅读书籍How to use Access Control Lists (ACLs)一章。

有关详细信息,请参阅this blog post以及文章底部的链接。

现在您已经设置了ACL,您可以使用this blog帖子,this questionthis question中的可能解决方案。

您还可以查看this gist中的ACLHelper。