10

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

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

我正在考虑在我的存储库中进行相同的验证,以便它们只返回允许用户查看的结果。但这会造成代码重复,因为现在重复了相同的验证,一次在选民中,一次在存储库中。

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

4

1 回答 1

1

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

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

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

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

于 2015-01-30T10:21:04.813 回答