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



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

CRUD 操作易于检查。但是如何检查结果集或概述的权限。概述使用分页和 PagerFanta 对结果进行分页。由于性能问题,无法事先检查结果。仅检查分页中返回的结果可能会导致空页或半空页。

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

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

啊,同样的旧"有条件的分页"问题,现在是新时代的:)

(顺便说一句,我认为即使是谷歌也没有解决它。有时您会在他们的分页输出中看到更多页面,然后您实际上会得到)。

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

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

最新更新