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();
+    }
 }