SHIRO-618 Remove Spring duplicate auto config classes
Including shiro-spring-boot-starter as a shiro-spring-boot-web-starter dependency
diff --git a/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/ShiroAutoConfiguration.java b/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/ShiroAutoConfiguration.java
index e013a4b..58cf898 100644
--- a/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/ShiroAutoConfiguration.java
+++ b/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/ShiroAutoConfiguration.java
@@ -29,13 +29,13 @@
import org.apache.shiro.session.mgt.SessionFactory;
import org.apache.shiro.session.mgt.SessionManager;
import org.apache.shiro.session.mgt.eis.SessionDAO;
+import org.apache.shiro.spring.boot.autoconfigure.exception.NoRealmBeanConfiguredException;
import org.apache.shiro.spring.config.AbstractShiroConfiguration;
-import org.apache.shiro.spring.config.ShiroBeanConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnResource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
import java.util.List;
@@ -64,6 +64,13 @@
@Bean
@ConditionalOnMissingBean
@Override
+ protected Authorizer authorizer() {
+ return super.authorizer();
+ }
+
+ @Bean
+ @ConditionalOnMissingBean
+ @Override
protected SubjectDAO subjectDAO() {
return super.subjectDAO();
}
@@ -110,5 +117,23 @@
return super.securityManager(realms);
}
+ @Bean
+ @ConditionalOnResource(resources = "classpath:shiro.ini")
+ protected Realm iniClasspathRealm() {
+ return iniRealmFromLocation("classpath:shiro.ini");
+ }
+
+ @Bean
+ @ConditionalOnResource(resources = "classpath:META-INF/shiro.ini")
+ protected Realm iniMetaInfClasspathRealm() {
+ return iniRealmFromLocation("classpath:META-INF/shiro.ini");
+ }
+
+ @Bean
+ @ConditionalOnMissingBean(Realm.class)
+ protected Realm missingRealm() {
+ throw new NoRealmBeanConfiguredException();
+ }
+
}
diff --git a/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/ShiroNoRealmConfiguredFailureAnalyzer.java b/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/ShiroNoRealmConfiguredFailureAnalyzer.java
new file mode 100644
index 0000000..d7d2753
--- /dev/null
+++ b/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/ShiroNoRealmConfiguredFailureAnalyzer.java
@@ -0,0 +1,14 @@
+package org.apache.shiro.spring.boot.autoconfigure;
+
+import org.apache.shiro.spring.boot.autoconfigure.exception.NoRealmBeanConfiguredException;
+import org.springframework.boot.diagnostics.AbstractFailureAnalyzer;
+import org.springframework.boot.diagnostics.FailureAnalysis;
+
+public class ShiroNoRealmConfiguredFailureAnalyzer extends AbstractFailureAnalyzer<NoRealmBeanConfiguredException> {
+
+ @Override
+ protected FailureAnalysis analyze(Throwable rootFailure, NoRealmBeanConfiguredException cause) {
+ return new FailureAnalysis( "No bean of type 'org.apache.shiro.realm.Realm' found.", "Please create bean of type 'Realm' or add a shiro.ini in the root classpath (src/main/resources/shiro.ini) or in the META-INF folder (src/main/resources/META-INF/shiro.ini).", cause);
+ }
+
+ }
\ No newline at end of file
diff --git a/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/exception/NoRealmBeanConfiguredException.java b/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/exception/NoRealmBeanConfiguredException.java
new file mode 100644
index 0000000..bbc0e0a
--- /dev/null
+++ b/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/exception/NoRealmBeanConfiguredException.java
@@ -0,0 +1,9 @@
+package org.apache.shiro.spring.boot.autoconfigure.exception;
+
+/**
+ * This exception should be thrown if not bean of type {@link org.apache.shiro.realm.Realm Realm} found.
+ *
+ */
+public class NoRealmBeanConfiguredException extends RuntimeException {
+
+}
diff --git a/support/spring-boot/spring-boot-starter/src/main/resources/META-INF/spring.factories b/support/spring-boot/spring-boot-starter/src/main/resources/META-INF/spring.factories
index 6d6f529..ac5e856 100644
--- a/support/spring-boot/spring-boot-starter/src/main/resources/META-INF/spring.factories
+++ b/support/spring-boot/spring-boot-starter/src/main/resources/META-INF/spring.factories
@@ -1 +1,7 @@
-org.springframework.boot.autoconfigure.EnableAutoConfiguration = org.apache.shiro.spring.boot.autoconfigure.ShiroBeanAutoConfiguration,org.apache.shiro.spring.boot.autoconfigure.ShiroAutoConfiguration,org.apache.shiro.spring.boot.autoconfigure.ShiroAnnotationProcessorAutoConfiguration
\ No newline at end of file
+org.springframework.boot.autoconfigure.EnableAutoConfiguration = \
+ org.apache.shiro.spring.boot.autoconfigure.ShiroBeanAutoConfiguration,\
+ org.apache.shiro.spring.boot.autoconfigure.ShiroAutoConfiguration,\
+ org.apache.shiro.spring.boot.autoconfigure.ShiroAnnotationProcessorAutoConfiguration
+
+org.springframework.boot.diagnostics.FailureAnalyzer = \
+ org.apache.shiro.spring.boot.autoconfigure.ShiroNoRealmConfiguredFailureAnalyzer
\ No newline at end of file
diff --git a/support/spring-boot/spring-boot-web-starter/pom.xml b/support/spring-boot/spring-boot-web-starter/pom.xml
index 15d9d9a..6157b05 100644
--- a/support/spring-boot/spring-boot-web-starter/pom.xml
+++ b/support/spring-boot/spring-boot-web-starter/pom.xml
@@ -35,7 +35,7 @@
<dependency>
<groupId>org.apache.shiro</groupId>
- <artifactId>shiro-spring</artifactId>
+ <artifactId>shiro-spring-boot-starter</artifactId>
</dependency>
<dependency>
diff --git a/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroAnnotationProcessorAutoConfiguration.java b/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroAnnotationProcessorAutoConfiguration.java
deleted file mode 100644
index c740fcf..0000000
--- a/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroAnnotationProcessorAutoConfiguration.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.shiro.spring.config.web.autoconfigure;
-
-import org.apache.shiro.mgt.SecurityManager;
-import org.apache.shiro.spring.config.AbstractShiroAnnotationProcessorConfiguration;
-import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
-import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.DependsOn;
-
-/**
- * @since 1.4.0
- */
-@SuppressWarnings("SpringFacetCodeInspection")
-@Configuration
-@ConditionalOnProperty(name = "shiro.annotations.enabled", matchIfMissing = true)
-public class ShiroAnnotationProcessorAutoConfiguration extends AbstractShiroAnnotationProcessorConfiguration {
-
- @Bean
- @DependsOn("lifecycleBeanPostProcessor")
- @ConditionalOnMissingBean
- @Override
- public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {
- return super.defaultAdvisorAutoProxyCreator();
- }
-
- @Bean
- @ConditionalOnMissingBean
- @Override
- public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
- return super.authorizationAttributeSourceAdvisor(securityManager);
- }
-}
diff --git a/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroBeanAutoConfiguration.java b/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroBeanAutoConfiguration.java
deleted file mode 100644
index 24ff025..0000000
--- a/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroBeanAutoConfiguration.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.shiro.spring.config.web.autoconfigure;
-
-import org.apache.shiro.event.EventBus;
-import org.apache.shiro.spring.LifecycleBeanPostProcessor;
-import org.apache.shiro.spring.config.AbstractShiroBeanConfiguration;
-import org.apache.shiro.spring.ShiroEventBusBeanPostProcessor;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * @since 1.4.0
- */
-@Configuration
-@ConditionalOnProperty(name = "shiro.web.enabled", matchIfMissing = true)
-public class ShiroBeanAutoConfiguration extends AbstractShiroBeanConfiguration {
-
- @Bean
- @ConditionalOnMissingBean
- @Override
- public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {
- return super.lifecycleBeanPostProcessor();
- }
-
- @Bean
- @ConditionalOnMissingBean
- @Override
- public EventBus eventBus() {
- return super.eventBus();
- }
-
- @Bean
- @ConditionalOnMissingBean
- @Override
- public ShiroEventBusBeanPostProcessor shiroEventBusAwareBeanPostProcessor() {
- return super.shiroEventBusAwareBeanPostProcessor();
- }
-}
diff --git a/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroNoRealmConfiguredFailureAnalyzer.java b/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroNoRealmConfiguredFailureAnalyzer.java
deleted file mode 100644
index 9a3f3c5..0000000
--- a/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroNoRealmConfiguredFailureAnalyzer.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package org.apache.shiro.spring.config.web.autoconfigure;
-
-import org.apache.shiro.spring.config.web.autoconfigure.exception.NoRealmBeanConfiguredException;
-import org.springframework.boot.diagnostics.AbstractFailureAnalyzer;
-import org.springframework.boot.diagnostics.FailureAnalysis;
-
-public class ShiroNoRealmConfiguredFailureAnalyzer extends AbstractFailureAnalyzer<NoRealmBeanConfiguredException> {
-
- @Override
- protected FailureAnalysis analyze(Throwable rootFailure, NoRealmBeanConfiguredException cause) {
- return new FailureAnalysis( "No bean of type 'org.apache.shiro.realm.Realm' found.", "Please create bean of type realm or add a shiro.ini in the root classpath (src/main/resources/shiro.ini) or in the META-INF folder (src/main/resources/META-INF/shiro.ini) .", cause);
- }
-
- }
\ No newline at end of file
diff --git a/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroWebAutoConfiguration.java b/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroWebAutoConfiguration.java
index b458f67..4ab440c 100644
--- a/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroWebAutoConfiguration.java
+++ b/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroWebAutoConfiguration.java
@@ -23,23 +23,22 @@
import org.apache.shiro.authc.Authenticator;
import org.apache.shiro.authc.pam.AuthenticationStrategy;
import org.apache.shiro.authz.Authorizer;
-import org.apache.shiro.config.Ini;
import org.apache.shiro.mgt.RememberMeManager;
import org.apache.shiro.mgt.SessionStorageEvaluator;
import org.apache.shiro.mgt.SessionsSecurityManager;
import org.apache.shiro.mgt.SubjectDAO;
import org.apache.shiro.mgt.SubjectFactory;
import org.apache.shiro.realm.Realm;
-import org.apache.shiro.realm.text.IniRealm;
import org.apache.shiro.session.mgt.SessionFactory;
import org.apache.shiro.session.mgt.SessionManager;
import org.apache.shiro.session.mgt.eis.SessionDAO;
-import org.apache.shiro.spring.config.web.autoconfigure.exception.NoRealmBeanConfiguredException;
+import org.apache.shiro.spring.boot.autoconfigure.ShiroAutoConfiguration;
import org.apache.shiro.spring.web.config.AbstractShiroWebConfiguration;
+import org.apache.shiro.spring.web.config.ShiroFilterChainDefinition;
import org.apache.shiro.web.servlet.Cookie;
+import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnResource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -47,6 +46,7 @@
* @since 1.4.0
*/
@Configuration
+@AutoConfigureBefore(ShiroAutoConfiguration.class)
@ConditionalOnProperty(name = "shiro.web.enabled", matchIfMissing = true)
public class ShiroWebAutoConfiguration extends AbstractShiroWebConfiguration {
@@ -88,6 +88,13 @@
@Bean
@ConditionalOnMissingBean
@Override
+ protected SubjectFactory subjectFactory() {
+ return super.subjectFactory();
+ }
+
+ @Bean
+ @ConditionalOnMissingBean
+ @Override
protected SessionFactory sessionFactory() {
return super.sessionFactory();
}
@@ -100,6 +107,20 @@
}
@Bean
+ @ConditionalOnMissingBean
+ @Override
+ protected SessionManager sessionManager() {
+ return super.sessionManager();
+ }
+
+ @Bean
+ @ConditionalOnMissingBean
+ @Override
+ protected SessionsSecurityManager securityManager(List<Realm> realms) {
+ return super.securityManager(realms);
+ }
+
+ @Bean
@ConditionalOnMissingBean(name = "sessionCookieTemplate")
@Override
protected Cookie sessionCookieTemplate() {
@@ -123,44 +144,7 @@
@Bean
@ConditionalOnMissingBean
@Override
- protected SubjectFactory subjectFactory() {
- return super.subjectFactory();
+ protected ShiroFilterChainDefinition shiroFilterChainDefinition() {
+ return super.shiroFilterChainDefinition();
}
-
- @Bean
- @ConditionalOnMissingBean
- @Override
- protected SessionManager sessionManager() {
- return super.sessionManager();
- }
-
- @Bean
- @ConditionalOnMissingBean
- @Override
- protected SessionsSecurityManager securityManager(List<Realm> realms) {
- return super.securityManager(realms);
- }
-
- @Bean
- @ConditionalOnResource(resources = "classpath:shiro.ini")
- protected Realm iniClasspathRealm() {
- Ini ini = Ini.fromResourcePath("classpath:shiro.ini");
- IniRealm iniRealm = new IniRealm( ini );
- return iniRealm;
- }
-
- @Bean
- @ConditionalOnResource(resources = "classpath:META-INF/shiro.ini")
- protected Realm iniMetaInfClasspathRealm() {
- Ini ini = Ini.fromResourcePath("classpath:META-INF/shiro.ini");
- IniRealm iniRealm = new IniRealm( ini );
- return iniRealm;
- }
-
- @Bean
- @ConditionalOnMissingBean(Realm.class)
- protected Realm missingRealm() {
- throw new NoRealmBeanConfiguredException();
- }
-
}
diff --git a/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/exception/NoRealmBeanConfiguredException.java b/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/exception/NoRealmBeanConfiguredException.java
deleted file mode 100644
index 29c7d07..0000000
--- a/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/exception/NoRealmBeanConfiguredException.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package org.apache.shiro.spring.config.web.autoconfigure.exception;
-
-/**
- * This exception should be thrown if not bean of type {@link Realm} found.
- *
- */
-public class NoRealmBeanConfiguredException extends RuntimeException {
-
-}
diff --git a/support/spring-boot/spring-boot-web-starter/src/main/resources/META-INF/spring.factories b/support/spring-boot/spring-boot-web-starter/src/main/resources/META-INF/spring.factories
index f056770..b69324a 100644
--- a/support/spring-boot/spring-boot-web-starter/src/main/resources/META-INF/spring.factories
+++ b/support/spring-boot/spring-boot-web-starter/src/main/resources/META-INF/spring.factories
@@ -1,3 +1,3 @@
-org.springframework.boot.autoconfigure.EnableAutoConfiguration = org.apache.shiro.spring.config.web.autoconfigure.ShiroBeanAutoConfiguration,org.apache.shiro.spring.config.web.autoconfigure.ShiroWebAutoConfiguration,org.apache.shiro.spring.config.web.autoconfigure.ShiroWebFilterConfiguration,org.apache.shiro.spring.config.web.autoconfigure.ShiroAnnotationProcessorAutoConfiguration
-
-org.springframework.boot.diagnostics.FailureAnalyzer=org.apache.shiro.spring.config.web.autoconfigure.ShiroNoRealmConfiguredFailureAnalyzer
\ No newline at end of file
+org.springframework.boot.autoconfigure.EnableAutoConfiguration = \
+ org.apache.shiro.spring.config.web.autoconfigure.ShiroWebAutoConfiguration,\
+ org.apache.shiro.spring.config.web.autoconfigure.ShiroWebFilterConfiguration
diff --git a/support/spring/src/main/java/org/apache/shiro/spring/config/AbstractShiroConfiguration.java b/support/spring/src/main/java/org/apache/shiro/spring/config/AbstractShiroConfiguration.java
index 7f25178..0be5176 100644
--- a/support/spring/src/main/java/org/apache/shiro/spring/config/AbstractShiroConfiguration.java
+++ b/support/spring/src/main/java/org/apache/shiro/spring/config/AbstractShiroConfiguration.java
@@ -27,9 +27,11 @@
import org.apache.shiro.authz.permission.PermissionResolver;
import org.apache.shiro.authz.permission.RolePermissionResolver;
import org.apache.shiro.cache.CacheManager;
+import org.apache.shiro.config.Ini;
import org.apache.shiro.event.EventBus;
import org.apache.shiro.mgt.*;
import org.apache.shiro.realm.Realm;
+import org.apache.shiro.realm.text.IniRealm;
import org.apache.shiro.session.mgt.DefaultSessionManager;
import org.apache.shiro.session.mgt.SessionFactory;
import org.apache.shiro.session.mgt.SessionManager;
@@ -149,4 +151,9 @@
authenticator.setAuthenticationStrategy(authenticationStrategy());
return authenticator;
}
+
+ protected Realm iniRealmFromLocation(String iniLocation) {
+ Ini ini = Ini.fromResourcePath(iniLocation);
+ return new IniRealm( ini );
+ }
}
diff --git a/support/spring/src/main/java/org/apache/shiro/spring/web/config/AbstractShiroWebConfiguration.java b/support/spring/src/main/java/org/apache/shiro/spring/web/config/AbstractShiroWebConfiguration.java
index 6229283..6e2cad3 100644
--- a/support/spring/src/main/java/org/apache/shiro/spring/web/config/AbstractShiroWebConfiguration.java
+++ b/support/spring/src/main/java/org/apache/shiro/spring/web/config/AbstractShiroWebConfiguration.java
@@ -18,10 +18,13 @@
*/
package org.apache.shiro.spring.web.config;
+import org.apache.shiro.config.Ini;
import org.apache.shiro.mgt.RememberMeManager;
import org.apache.shiro.mgt.SessionStorageEvaluator;
import org.apache.shiro.mgt.SessionsSecurityManager;
import org.apache.shiro.mgt.SubjectFactory;
+import org.apache.shiro.realm.Realm;
+import org.apache.shiro.realm.text.IniRealm;
import org.apache.shiro.session.mgt.SessionManager;
import org.apache.shiro.spring.config.AbstractShiroConfiguration;
import org.apache.shiro.web.mgt.CookieRememberMeManager;
@@ -161,4 +164,9 @@
return securityManager;
}
+ protected ShiroFilterChainDefinition shiroFilterChainDefinition() {
+ DefaultShiroFilterChainDefinition chainDefinition = new DefaultShiroFilterChainDefinition();
+ chainDefinition.addPathDefinition("/**", "authc");
+ return chainDefinition;
+ }
}
diff --git a/support/spring/src/main/java/org/apache/shiro/spring/web/config/ShiroWebConfiguration.java b/support/spring/src/main/java/org/apache/shiro/spring/web/config/ShiroWebConfiguration.java
index e3bb516..dc57b22 100644
--- a/support/spring/src/main/java/org/apache/shiro/spring/web/config/ShiroWebConfiguration.java
+++ b/support/spring/src/main/java/org/apache/shiro/spring/web/config/ShiroWebConfiguration.java
@@ -117,4 +117,9 @@
return super.securityManager(realms);
}
+ @Bean
+ @Override
+ protected ShiroFilterChainDefinition shiroFilterChainDefinition() {
+ return super.shiroFilterChainDefinition();
+ }
}