spring security - 如何在自定义 SPEL 方法中修改 @PostAuthorize 的返回对象?

标签 spring spring-security spring-3

我希望过滤服务方法返回的集合。此过滤将涉及调用另一个服务方法,因此我不会使用 @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/

相关文章:

java - 扩展 SimpleUrlAuthenticationFailureHandler 会产生 404 和 No mapping found 警告

java - 如何在 Spring 中为计划进程验证系统用户身份?

tomcat - 使用 Tomcat 和 Spring security 时,是否可以在 webapp 重新启动时记住登录凭据?

spring-annotations - @Autowired by constructor 按类型查找 bean。如何使用 Autowiring 注解按名称将 bean 注入(inject)构造函数

spring - 如何使用 Spring Security 3.1 以编程方式登录用户

java - 在 Spring 中将原型(prototype)列表注入(inject) Singleton bean

java - 如何从另一个类初始化自己的列表。 JAVA

java - 如何在方法上执行 post 请求返回整数

spring - @PostConstruct 方法在 Spring 中不被调用

spring-mvc - Thymeleaf 不解析 "sec:authorize"属性