我使用voters来检查用户是否具有在实体上执行特定操作的正确权限。
CRUD操作很容易检查。但是如何检查结果集或概视图上的权限呢?概述使用分页和PagerFanta对结果进行分页。由于性能问题,预先检查结果是不可能的。仅检查已在分页中返回的结果可能会导致空页或半空页。
我正在考虑将相同的验证放在我的存储库中,这样它们就只返回用户可以看到的结果。但这会造成代码重复,因为相同的验证现在是重复的,一次在投票器中,一次在存储库中。
有没有更好的解决方案,或者选民不是最好的解决方案?
发布于 2015-01-30 18:21:05
啊,同样的“有条件的分页”问题,现在是新时代的问题:)
(顺便说一句,我认为连谷歌都没有解决这个问题。有时你会在他们的分页输出中看到更多的页面,然后你就会得到)。
当然,现在的问题是Voter不会以任何方式帮助您,因为它不是针对您的问题-它用于检查对象级别的访问,但您需要在sql/dql/query级别执行它。最大的区别是,您的方法需要返回dql条件,而不是返回弃权票、拒绝或准予。所以任务是分开的。
至少这样-您对同一对象的访问逻辑将在同一个类中。
https://stackoverflow.com/questions/27439795
复制相似问题