Browse Source

SEC-1768: Use AopProxyUtils.ultimateTargetClass to cater for situation where security interceptor is applied to a proxy.

3.0.x
Luke Taylor 15 years ago
parent
commit
cb7a94af88
  1. 8
      core/src/main/java/org/springframework/security/access/method/AbstractMethodSecurityMetadataSource.java

8
core/src/main/java/org/springframework/security/access/method/AbstractMethodSecurityMetadataSource.java

@ -15,6 +15,7 @@ @@ -15,6 +15,7 @@
package org.springframework.security.access.method;
import org.springframework.aop.framework.AopProxyUtils;
import org.springframework.security.access.ConfigAttribute;
import org.aopalliance.intercept.MethodInvocation;
@ -52,7 +53,12 @@ public abstract class AbstractMethodSecurityMetadataSource implements MethodSecu @@ -52,7 +53,12 @@ public abstract class AbstractMethodSecurityMetadataSource implements MethodSecu
Class<?> targetClass = null;
if (target != null) {
targetClass = target instanceof Class<?> ? (Class<?>)target : target.getClass();
targetClass = target instanceof Class<?> ? (Class<?>)target : AopProxyUtils.ultimateTargetClass(target);
if (targetClass == null) {
// See SPR-7447. TODO: Only required for Spring < 3.0.4
targetClass = target.getClass();
}
}
return getAttributes(mi.getMethod(), targetClass);

Loading…
Cancel
Save