3

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

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

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

4

1 回答 1

1

这就是 ACL 的用途。

请阅读本书章节如何使用访问控制列表 (ACL)

更多信息可以在这篇博文和文章底部的链接中找到。

现在您已经设置了 ACL,您可以使用此博客文章、 此问题此问题中的可能解决方案。

您也可以看看这个gist 中的 ACLHelper 。

于 2013-06-23T17:29:13.677 回答