情况:我的应用程序处理用户可能访问或可能无权访问的Doctrine实体。特定用户是否可以为特定目的访问特定实体由自定义Voter对象决定(决定用户是否具有访问权限的过程相当复杂)。
问题:我需要向用户显示他有权访问的Doctrine实体列表。可能这个列表需要分页。由于决定用户是否可以访问实体的复杂性,为此创建单个DQL / SQL查询几乎是不可能的(或者至少非常棘手)。
问题:有没有更好的方法来构建此列表,而不仅仅是从数据库中获取所有实体,循环它们,并询问security.context是否有实体访问权限(添加授予数组访问权限的每个实体,直到我构建了一个包含足够实体的数组来填充页面?在询问实体清单的原则时,我可以以某种方式考虑选民吗?
答案 0 :(得分:1)
这就是ACL的意思。
请阅读书籍How to use Access Control Lists (ACLs)一章。
有关详细信息,请参阅this blog post以及文章底部的链接。
现在您已经设置了ACL,您可以使用this blog帖子,this question或this question中的可能解决方案。
您还可以查看this gist中的ACLHelper。