在另一种方法中调用预授权方法时,最好是将@PreAuthorize
添加到调用者,还是应该使用Spring applicationContext
调用它。我在一个例子中看到了第二种方式。代码片段如下,其中哪一个更好,为什么?
方法1
@PreAuthorize(...)
public List<String> methodA(args) {
}
@PreAuthorize(...)
public List<String> methodB(args, extraArgs) {
List<String> aList = methodA(args);
// Modify aList
return aList;
}
方法2
@PreAuthorize(...)
public List<String> methodA(args) {
}
// This will be authorized when we call methodA
public List<String> methodB(args, extraArgs) {
ThisClass springProxy = applicationContext.getBean(ThisClass.class);
List<String> aList = springProxy.methodA(args);
// Modify aList
return aList;
}
答案 0 :(得分:0)
因为Spring使用代理定义Aspect。使用method1,当您从methodB调用methodA时,您就在代理中。然后,Spŕing添加的所有方面都超出了范围。您需要将PreAuthorize注释应用于定义API的所有方法。