我正在尝试使用注释和 spring-security 为我的开源项目添加方法级别的安全性。我现在面临的问题是 findAll 方法,尤其是用于分页的方法(例如返回页面)。
使用@PostFilter 适用于列表(但我个人认为在应用程序而不是数据库中过滤不是一个好主意)但在分页查询上完全失败。
这是有问题的,因为我有一个包含 List<Compound>
的实体.化合物有不同的实现方式,用户可能只有读取其中一种化合物的权限。复合用途 TABLE_PER_CLASS
遗产。存储库实现 QueryDslPredicateExecutor
.
我的想法是为每个查询添加一个谓词,根据当前用户限制返回结果。然而,我有点迷失在 a) 用户和角色的数据模型应该如何看起来和 b) 然后如何创建谓词(一旦定义了模型,这可能很容易)。或者 querydsl 是否已经提供基于类型的过滤(在被查询类中包含的元素上)?
最佳答案
目前没有这样的支持,但我们在路线图上有它。你可能想关注 DATACMNS-293总体进展。
关于spring-security - Spring Data JPA 和 spring-security : filter on database level (especially for paging),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15108543/