Skip to content

Commit 927de0d

Browse files
committed
Use AuthorizationProxy Interface for Class Proxying
Issue gh-15747
1 parent 2ff29dc commit 927de0d

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

core/src/main/java/org/springframework/security/authorization/method/AuthorizationAdvisorProxyFactory.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,8 @@ public final class AuthorizationAdvisorProxyFactory
9191
private static final TargetVisitor DEFAULT_VISITOR_SKIP_VALUE_TYPES = TargetVisitor.of(new ClassVisitor(),
9292
new IgnoreValueTypeVisitor(), DEFAULT_VISITOR);
9393

94+
private final AuthorizationProxyMethodInterceptor authorizationProxy = new AuthorizationProxyMethodInterceptor();
95+
9496
private List<AuthorizationAdvisor> advisors;
9597

9698
private TargetVisitor visitor = DEFAULT_VISITOR;
@@ -172,8 +174,7 @@ public Object proxy(Object target) {
172174
return proxied;
173175
}
174176
ProxyFactory factory = new ProxyFactory(target);
175-
AuthorizationProxyMethodInterceptor unwrapper = new AuthorizationProxyMethodInterceptor();
176-
factory.addAdvisors(unwrapper);
177+
factory.addAdvisors(this.authorizationProxy);
177178
for (Advisor advisor : this.advisors) {
178179
factory.addAdvisors(advisor);
179180
}
@@ -359,6 +360,8 @@ public Object visit(AuthorizationAdvisorProxyFactory proxyFactory, Object object
359360

360361
private static final class ClassVisitor implements TargetVisitor {
361362

363+
private final AuthorizationProxyMethodInterceptor authorizationProxy = new AuthorizationProxyMethodInterceptor();
364+
362365
@Override
363366
public Object visit(AuthorizationAdvisorProxyFactory proxyFactory, Object object) {
364367
if (object instanceof Class<?> targetClass) {
@@ -367,9 +370,11 @@ public Object visit(AuthorizationAdvisorProxyFactory proxyFactory, Object object
367370
factory.setInterfaces(ClassUtils.getAllInterfacesForClass(targetClass));
368371
factory.setOpaque(true);
369372
factory.setProxyTargetClass(!Modifier.isFinal(targetClass.getModifiers()));
373+
factory.addAdvisor(this.authorizationProxy);
370374
for (Advisor advisor : proxyFactory) {
371375
factory.addAdvisors(advisor);
372376
}
377+
factory.addInterface(AuthorizationProxy.class);
373378
return factory.getProxyClass(getClass().getClassLoader());
374379
}
375380
return null;

0 commit comments

Comments
 (0)