|
@@ -24,10 +24,7 @@ import org.apache.commons.logging.Log;
|
|
import org.apache.commons.logging.LogFactory;
|
|
import org.apache.commons.logging.LogFactory;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.config.BeanDefinition;
|
|
import org.springframework.beans.factory.config.BeanDefinition;
|
|
-import org.springframework.context.annotation.Bean;
|
|
|
|
-import org.springframework.context.annotation.Configuration;
|
|
|
|
-import org.springframework.context.annotation.ImportAware;
|
|
|
|
-import org.springframework.context.annotation.Role;
|
|
|
|
|
|
+import org.springframework.context.annotation.*;
|
|
import org.springframework.core.annotation.AnnotationAttributes;
|
|
import org.springframework.core.annotation.AnnotationAttributes;
|
|
import org.springframework.core.annotation.AnnotationUtils;
|
|
import org.springframework.core.annotation.AnnotationUtils;
|
|
import org.springframework.core.type.AnnotationMetadata;
|
|
import org.springframework.core.type.AnnotationMetadata;
|
|
@@ -48,6 +45,7 @@ import org.springframework.security.access.intercept.AfterInvocationProviderMana
|
|
import org.springframework.security.access.intercept.RunAsManager;
|
|
import org.springframework.security.access.intercept.RunAsManager;
|
|
import org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor;
|
|
import org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor;
|
|
import org.springframework.security.access.intercept.aopalliance.MethodSecurityMetadataSourceAdvisor;
|
|
import org.springframework.security.access.intercept.aopalliance.MethodSecurityMetadataSourceAdvisor;
|
|
|
|
+import org.springframework.security.access.intercept.aspectj.AspectJMethodSecurityInterceptor;
|
|
import org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource;
|
|
import org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource;
|
|
import org.springframework.security.access.method.MethodSecurityMetadataSource;
|
|
import org.springframework.security.access.method.MethodSecurityMetadataSource;
|
|
import org.springframework.security.access.prepost.PostInvocationAdviceProvider;
|
|
import org.springframework.security.access.prepost.PostInvocationAdviceProvider;
|
|
@@ -111,7 +109,7 @@ public class GlobalMethodSecurityConfiguration implements ImportAware {
|
|
*/
|
|
*/
|
|
@Bean
|
|
@Bean
|
|
public MethodInterceptor methodSecurityInterceptor() throws Exception {
|
|
public MethodInterceptor methodSecurityInterceptor() throws Exception {
|
|
- MethodSecurityInterceptor methodSecurityInterceptor = new MethodSecurityInterceptor();
|
|
|
|
|
|
+ MethodSecurityInterceptor methodSecurityInterceptor = isAspectJ() ? new AspectJMethodSecurityInterceptor() : new MethodSecurityInterceptor();
|
|
methodSecurityInterceptor
|
|
methodSecurityInterceptor
|
|
.setAccessDecisionManager(accessDecisionManager());
|
|
.setAccessDecisionManager(accessDecisionManager());
|
|
methodSecurityInterceptor
|
|
methodSecurityInterceptor
|
|
@@ -379,6 +377,10 @@ public class GlobalMethodSecurityConfiguration implements ImportAware {
|
|
return (Integer) enableMethodSecurity().get("order");
|
|
return (Integer) enableMethodSecurity().get("order");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private boolean isAspectJ() {
|
|
|
|
+ return enableMethodSecurity().getEnum("mode") == AdviceMode.ASPECTJ;
|
|
|
|
+ }
|
|
|
|
+
|
|
private AnnotationAttributes enableMethodSecurity() {
|
|
private AnnotationAttributes enableMethodSecurity() {
|
|
if (enableMethodSecurity == null) {
|
|
if (enableMethodSecurity == null) {
|
|
// if it is null look at this instance (i.e. a subclass was used)
|
|
// if it is null look at this instance (i.e. a subclass was used)
|