检查每个实体的分页概述的权限

Waa*_*als 9 symfony doctrine-orm pagerfanta

我正在使用选民来检查用户是否具有对实体执行特定操作的正确权限.

CRUD操作很容易检查.但是,如何检查结果集或概述的权限.概述使用PagerFanta分页来对结果进行分页.由于性能问题,无法预先检查结果.仅检查已经分页返回的结果可能导致空页或半空页.

我正在考虑在我的存储库中进行相同的验证,以便它们只返回允许用户查看的结果.但这会产生代码重复,因为现在重复相同的验证,一次是在投票者中,一次是在存储库中.

是否有更好的解决方案,或者不是选民最好的解决方案?

par*_*nas 1

啊,同样老的“有条件分页”问题,现在是新时代了:)

(顺便说一句,我认为即使谷歌也没有解决这个问题。有时你会在他们的分页输出中看到更多页面,然后你才真正得到)。

当然,现在您的情况的问题是 Voter 不会以任何方式帮助您,因为它不适合您的问题 - 它用于检查对象级别的访问,但您需要在 sql/dql/ 上执行它查询级别。最大的区别在于,您的方法需要返回 dql 条件,而不是返回弃权、拒绝或授予。所以任务是分开的。

不过,您可以做的是添加将这些条件返回到您的选民类中的函数,并将其注入到您的存储库中。至少这样 - 您对同一对象的访问逻辑将位于同一类中。