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(),
|
private static final TargetVisitor DEFAULT_VISITOR_SKIP_VALUE_TYPES = TargetVisitor.of(new ClassVisitor(),
|
||||||
new IgnoreValueTypeVisitor(), DEFAULT_VISITOR);
|
new IgnoreValueTypeVisitor(), DEFAULT_VISITOR);
|
||||||
|
|
||||||
|
private final AuthorizationProxyMethodInterceptor authorizationProxy = new AuthorizationProxyMethodInterceptor();
|
||||||
|
|
||||||
private List<AuthorizationAdvisor> advisors;
|
private List<AuthorizationAdvisor> advisors;
|
||||||
|
|
||||||
private TargetVisitor visitor = DEFAULT_VISITOR;
|
private TargetVisitor visitor = DEFAULT_VISITOR;
|
||||||
@ -172,8 +174,7 @@ public final class AuthorizationAdvisorProxyFactory
|
|||||||
return proxied;
|
return proxied;
|
||||||
}
|
}
|
||||||
ProxyFactory factory = new ProxyFactory(target);
|
ProxyFactory factory = new ProxyFactory(target);
|
||||||
AuthorizationProxyMethodInterceptor unwrapper = new AuthorizationProxyMethodInterceptor();
|
factory.addAdvisors(this.authorizationProxy);
|
||||||
factory.addAdvisors(unwrapper);
|
|
||||||
for (Advisor advisor : this.advisors) {
|
for (Advisor advisor : this.advisors) {
|
||||||
factory.addAdvisors(advisor);
|
factory.addAdvisors(advisor);
|
||||||
}
|
}
|
||||||
@ -359,6 +360,8 @@ public final class AuthorizationAdvisorProxyFactory
|
|||||||
|
|
||||||
private static final class ClassVisitor implements TargetVisitor {
|
private static final class ClassVisitor implements TargetVisitor {
|
||||||
|
|
||||||
|
private final AuthorizationProxyMethodInterceptor authorizationProxy = new AuthorizationProxyMethodInterceptor();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object visit(AuthorizationAdvisorProxyFactory proxyFactory, Object object) {
|
public Object visit(AuthorizationAdvisorProxyFactory proxyFactory, Object object) {
|
||||||
if (object instanceof Class<?> targetClass) {
|
if (object instanceof Class<?> targetClass) {
|
||||||
@ -367,9 +370,11 @@ public final class AuthorizationAdvisorProxyFactory
|
|||||||
factory.setInterfaces(ClassUtils.getAllInterfacesForClass(targetClass));
|
factory.setInterfaces(ClassUtils.getAllInterfacesForClass(targetClass));
|
||||||
factory.setOpaque(true);
|
factory.setOpaque(true);
|
||||||
factory.setProxyTargetClass(!Modifier.isFinal(targetClass.getModifiers()));
|
factory.setProxyTargetClass(!Modifier.isFinal(targetClass.getModifiers()));
|
||||||
|
factory.addAdvisor(this.authorizationProxy);
|
||||||
for (Advisor advisor : proxyFactory) {
|
for (Advisor advisor : proxyFactory) {
|
||||||
factory.addAdvisors(advisor);
|
factory.addAdvisors(advisor);
|
||||||
}
|
}
|
||||||
|
factory.addInterface(AuthorizationProxy.class);
|
||||||
return factory.getProxyClass(getClass().getClassLoader());
|
return factory.getProxyClass(getClass().getClassLoader());
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user