我希望过滤服务方法返回的集合。此过滤将涉及调用另一个服务方法,因此我不会使用 @PostFilter
,因为它会调用集合中每个元素的注释内的 SPEL
表达式。相反,我使用 @PostAuthorize
如下:
@PostAuthorize("canAssignToUser(returnObject)")
List<UserInfo> getUsers(int userId);
在canAssignToUser
中,我试图从传递给它的返回列表中删除用户。显然,这是一个问题,并且修改返回的列表有一些限制。如何使用方法级注释修改方法返回的列表,而不为列表的每个元素调用 SPEL 表达式。
最佳答案
@PostAuthorize
用于评估 boolean
值,因此拦截器不会将返回值传递给表达式(查看 here )。
在不检查每个元素的情况下删除元素的方法是什么? (就像@PostFilter
一样)
如果你想使用 Spring Security 进行过滤,我认为你别无选择
关于spring security - 如何在自定义 SPEL 方法中修改 @PostAuthorize 的返回对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10583668/