Spring mvc 为什么@PostFilter don';我有时不能在春季安全服务中心工作吗?
我在我的项目中使用spring安全性。我的服务如下:Spring mvc 为什么@PostFilter don';我有时不能在春季安全服务中心工作吗?,spring-mvc,spring-security,spring-security-acl,Spring Mvc,Spring Security,Spring Security Acl,我在我的项目中使用spring安全性。我的服务如下: public interface A { @PostFilter("hasPermission(filterObject, 'read')") List<MyEntity> method1(); @PostFilter("hasPermission(filterObject, 'read')") List<MyEntity> method2(); } 公共接口A{ @PostFilter(
public interface A {
@PostFilter("hasPermission(filterObject, 'read')")
List<MyEntity> method1();
@PostFilter("hasPermission(filterObject, 'read')")
List<MyEntity> method2();
}
公共接口A{
@PostFilter(“hasPermission(filterObject,'read')”)
列表方法1();
@PostFilter(“hasPermission(filterObject,'read')”)
列表方法2();
}
在实现method1()
中,我使用method2()
,但是method2()
中的PostFilter
在此状态下不工作
为什么?你的观察是正确的 为了处理安全注释,Spring使用代理。代理是一个动态生成的类,放在调用方和实际实现之间。因此,当您使用接口时,实际上并不是直接调用您的实现,而是一个安全层 默认情况下,Spring使用接口代理;代理实现了所讨论的接口。这意味着仅当您将作为接口使用时才会调用安全性。当从实现类本身调用方法时,不会强制执行安全性,因为实现不知道代理 通过使用类代理,当从类本身调用方法时,安全注释可以工作,因为这样代理扩展了实现。然而,仍然只有公共方法上的注释起作用
有关代理的更深入解释,请参阅Spring框架手册中的。您的观察是正确的 为了处理安全注释,Spring使用代理。代理是一个动态生成的类,放在调用方和实际实现之间。因此,当您使用接口时,实际上并不是直接调用您的实现,而是一个安全层 默认情况下,Spring使用接口代理;代理实现了所讨论的接口。这意味着仅当您将作为接口使用时才会调用安全性。当从实现类本身调用方法时,不会强制执行安全性,因为实现不知道代理 通过使用类代理,当从类本身调用方法时,安全注释可以工作,因为这样代理扩展了实现。然而,仍然只有公共方法上的注释起作用 有关代理的更深入解释,请参阅Spring框架手册中的