Spring security Spring Security 3:@PostFilter不工作

Spring security Spring Security 3:@PostFilter不工作,spring-security,Spring Security,嗨 我是SpringSecurity3新手,在接口中声明的方法上尝试@PostFilter,但返回的集合没有得到过滤 代码如下: public interface IProductService { @PostFilter("(!filterObject.customersOnly) or (filterObject.customersOnly and hasRole('ROLE_USER'))") Collection<Category> getCategories(); }

嗨 我是SpringSecurity3新手,在接口中声明的方法上尝试@PostFilter,但返回的集合没有得到过滤

代码如下:

public interface IProductService {

 @PostFilter("(!filterObject.customersOnly) or (filterObject.customersOnly and hasRole('ROLE_USER'))")
 Collection<Category> getCategories();
}
customerOnly是域对象类别中的布尔属性

我在xyz-security.xml上添加了以下元素:

<global-method-security pre-post-annotations="enabled" />
有人能帮我理解我错过了什么吗


谢谢

造成这种情况的典型原因是:

AspectJ和/或CGLIB JAR不在类路径中。 您可以查看接口或类上的注释,以确定哪个AOP实现支持哪个。 您已将Spring安全配置添加到与声明安全bean不同的ApplicationContext中。例如,当您的Spring安全配置由ContextLoaderListener声明时,您正在尝试保护*-servlet.xml文件中的bean。 您已经删除或更改了该声明,以便配置Spring安全性的同一ApplicationContext不会处理带注释的bean。 如果这些建议都不适用,请启用调试日志并观察应用程序启动,以查看bean注释是否得到处理


顺便说一句,我有很多读者报告了这个问题的相似之处——这个示例的源代码确实可以工作,但在所有情况下,读者确实在随后更改了上述4项中的一项,导致示例代码中断

不知怎的,@PostFilter没有被检测到,有人能帮我理解它发生的原因吗?这是Peter Mularien的《Spring Security 3》一书的示例代码。谢谢