mirror of
https://github.com/spring-projects/spring-security.git
synced 2025-06-26 22:02:41 +00:00
Use AuthorizationProxy Interface for Class Proxying
Issue gh-15747
This commit is contained in:
parent
2ff29dc229
commit
927de0d3b8
@ -91,6 +91,8 @@ public final class AuthorizationAdvisorProxyFactory
|
||||
private static final TargetVisitor DEFAULT_VISITOR_SKIP_VALUE_TYPES = TargetVisitor.of(new ClassVisitor(),
|
||||
new IgnoreValueTypeVisitor(), DEFAULT_VISITOR);
|
||||
|
||||
private final AuthorizationProxyMethodInterceptor authorizationProxy = new AuthorizationProxyMethodInterceptor();
|
||||
|
||||
private List<AuthorizationAdvisor> advisors;
|
||||
|
||||
private TargetVisitor visitor = DEFAULT_VISITOR;
|
||||
@ -172,8 +174,7 @@ public final class AuthorizationAdvisorProxyFactory
|
||||
return proxied;
|
||||
}
|
||||
ProxyFactory factory = new ProxyFactory(target);
|
||||
AuthorizationProxyMethodInterceptor unwrapper = new AuthorizationProxyMethodInterceptor();
|
||||
factory.addAdvisors(unwrapper);
|
||||
factory.addAdvisors(this.authorizationProxy);
|
||||
for (Advisor advisor : this.advisors) {
|
||||
factory.addAdvisors(advisor);
|
||||
}
|
||||
@ -359,6 +360,8 @@ public final class AuthorizationAdvisorProxyFactory
|
||||
|
||||
private static final class ClassVisitor implements TargetVisitor {
|
||||
|
||||
private final AuthorizationProxyMethodInterceptor authorizationProxy = new AuthorizationProxyMethodInterceptor();
|
||||
|
||||
@Override
|
||||
public Object visit(AuthorizationAdvisorProxyFactory proxyFactory, Object object) {
|
||||
if (object instanceof Class<?> targetClass) {
|
||||
@ -367,9 +370,11 @@ public final class AuthorizationAdvisorProxyFactory
|
||||
factory.setInterfaces(ClassUtils.getAllInterfacesForClass(targetClass));
|
||||
factory.setOpaque(true);
|
||||
factory.setProxyTargetClass(!Modifier.isFinal(targetClass.getModifiers()));
|
||||
factory.addAdvisor(this.authorizationProxy);
|
||||
for (Advisor advisor : proxyFactory) {
|
||||
factory.addAdvisors(advisor);
|
||||
}
|
||||
factory.addInterface(AuthorizationProxy.class);
|
||||
return factory.getProxyClass(getClass().getClassLoader());
|
||||
}
|
||||
return null;
|
||||
|
Loading…
x
Reference in New Issue
Block a user