Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc 为什么@PostFilter don';我有时不能在春季安全服务中心工作吗?_Spring Mvc_Spring Security_Spring Security Acl - Fatal编程技术网

Spring mvc 为什么@PostFilter don';我有时不能在春季安全服务中心工作吗?

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(

我在我的项目中使用spring安全性。我的服务如下:

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框架手册中的