You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shiro.apache.org by bd...@apache.org on 2017/05/01 02:16:04 UTC
[1/3] shiro git commit: SHIRO-618 - Autoconfiguration for Realm and
ShiroFilterChainDefinition
Repository: shiro
Updated Branches:
refs/heads/master 8acc82ab4 -> b12d70e60
SHIRO-618 - Autoconfiguration for Realm and ShiroFilterChainDefinition
Project: http://git-wip-us.apache.org/repos/asf/shiro/repo
Commit: http://git-wip-us.apache.org/repos/asf/shiro/commit/3ebfd959
Tree: http://git-wip-us.apache.org/repos/asf/shiro/tree/3ebfd959
Diff: http://git-wip-us.apache.org/repos/asf/shiro/diff/3ebfd959
Branch: refs/heads/master
Commit: 3ebfd9595e1bc03a320e49b8a8d2c6941acaf6cf
Parents: 8acc82a
Author: marcgiffing <ma...@web.de>
Authored: Sat Mar 25 16:14:40 2017 +0100
Committer: Brian Demers <bd...@apache.org>
Committed: Sun Apr 30 22:11:45 2017 -0400
----------------------------------------------------------------------
.../ShiroNoRealmConfiguredFailureAnalyzer.java | 14 ++++++++
.../ShiroWebAutoConfiguration.java | 38 +++++++++++++++++---
.../NoRealmBeanConfiguredException.java | 9 +++++
.../main/resources/META-INF/spring.factories | 2 ++
4 files changed, 58 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/shiro/blob/3ebfd959/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroNoRealmConfiguredFailureAnalyzer.java
----------------------------------------------------------------------
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
new file mode 100644
index 0000000..9a3f3c5
--- /dev/null
+++ b/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroNoRealmConfiguredFailureAnalyzer.java
@@ -0,0 +1,14 @@
+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
http://git-wip-us.apache.org/repos/asf/shiro/blob/3ebfd959/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroWebAutoConfiguration.java
----------------------------------------------------------------------
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 953a63e..b458f67 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
@@ -18,24 +18,30 @@
*/
package org.apache.shiro.spring.config.web.autoconfigure;
+import java.util.List;
+
import org.apache.shiro.authc.Authenticator;
import org.apache.shiro.authc.pam.AuthenticationStrategy;
import org.apache.shiro.authz.Authorizer;
-import org.apache.shiro.mgt.*;
+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.web.config.AbstractShiroWebConfiguration;
import org.apache.shiro.web.servlet.Cookie;
-import org.springframework.boot.autoconfigure.AutoConfigureOrder;
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;
/**
* @since 1.4.0
@@ -134,5 +140,27 @@ public class ShiroWebAutoConfiguration extends AbstractShiroWebConfiguration {
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();
+ }
}
http://git-wip-us.apache.org/repos/asf/shiro/blob/3ebfd959/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/exception/NoRealmBeanConfiguredException.java
----------------------------------------------------------------------
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
new file mode 100644
index 0000000..29c7d07
--- /dev/null
+++ b/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/exception/NoRealmBeanConfiguredException.java
@@ -0,0 +1,9 @@
+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 {
+
+}
http://git-wip-us.apache.org/repos/asf/shiro/blob/3ebfd959/support/spring-boot/spring-boot-web-starter/src/main/resources/META-INF/spring.factories
----------------------------------------------------------------------
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 397c6e4..f056770 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 +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
[2/3] shiro git commit: SHIRO-618 Remove Spring duplicate auto config
classes
Posted by bd...@apache.org.
SHIRO-618 Remove Spring duplicate auto config classes
Including shiro-spring-boot-starter as a shiro-spring-boot-web-starter dependency
Project: http://git-wip-us.apache.org/repos/asf/shiro/repo
Commit: http://git-wip-us.apache.org/repos/asf/shiro/commit/66e6b96e
Tree: http://git-wip-us.apache.org/repos/asf/shiro/tree/66e6b96e
Diff: http://git-wip-us.apache.org/repos/asf/shiro/diff/66e6b96e
Branch: refs/heads/master
Commit: 66e6b96ee3e5ce675654ff70a4a58b623e6ba87e
Parents: 3ebfd95
Author: Brian Demers <bd...@apache.org>
Authored: Sun Apr 30 21:57:00 2017 -0400
Committer: Brian Demers <bd...@apache.org>
Committed: Sun Apr 30 22:11:46 2017 -0400
----------------------------------------------------------------------
.../autoconfigure/ShiroAutoConfiguration.java | 29 ++++++++-
.../ShiroNoRealmConfiguredFailureAnalyzer.java | 14 ++++
.../NoRealmBeanConfiguredException.java | 9 +++
.../main/resources/META-INF/spring.factories | 8 ++-
.../spring-boot/spring-boot-web-starter/pom.xml | 2 +-
...iroAnnotationProcessorAutoConfiguration.java | 53 ---------------
.../ShiroBeanAutoConfiguration.java | 57 ----------------
.../ShiroNoRealmConfiguredFailureAnalyzer.java | 14 ----
.../ShiroWebAutoConfiguration.java | 68 ++++++++------------
.../NoRealmBeanConfiguredException.java | 9 ---
.../main/resources/META-INF/spring.factories | 6 +-
.../config/AbstractShiroConfiguration.java | 7 ++
.../config/AbstractShiroWebConfiguration.java | 8 +++
.../web/config/ShiroWebConfiguration.java | 5 ++
14 files changed, 107 insertions(+), 182 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/shiro/blob/66e6b96e/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/ShiroAutoConfiguration.java
----------------------------------------------------------------------
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.realm.Realm;
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 @@ public class ShiroAutoConfiguration extends AbstractShiroConfiguration {
@Bean
@ConditionalOnMissingBean
@Override
+ protected Authorizer authorizer() {
+ return super.authorizer();
+ }
+
+ @Bean
+ @ConditionalOnMissingBean
+ @Override
protected SubjectDAO subjectDAO() {
return super.subjectDAO();
}
@@ -110,5 +117,23 @@ public class ShiroAutoConfiguration extends AbstractShiroConfiguration {
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();
+ }
+
}
http://git-wip-us.apache.org/repos/asf/shiro/blob/66e6b96e/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/ShiroNoRealmConfiguredFailureAnalyzer.java
----------------------------------------------------------------------
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
http://git-wip-us.apache.org/repos/asf/shiro/blob/66e6b96e/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/exception/NoRealmBeanConfiguredException.java
----------------------------------------------------------------------
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 {
+
+}
http://git-wip-us.apache.org/repos/asf/shiro/blob/66e6b96e/support/spring-boot/spring-boot-starter/src/main/resources/META-INF/spring.factories
----------------------------------------------------------------------
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
http://git-wip-us.apache.org/repos/asf/shiro/blob/66e6b96e/support/spring-boot/spring-boot-web-starter/pom.xml
----------------------------------------------------------------------
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>
http://git-wip-us.apache.org/repos/asf/shiro/blob/66e6b96e/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroAnnotationProcessorAutoConfiguration.java
----------------------------------------------------------------------
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);
- }
-}
http://git-wip-us.apache.org/repos/asf/shiro/blob/66e6b96e/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroBeanAutoConfiguration.java
----------------------------------------------------------------------
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();
- }
-}
http://git-wip-us.apache.org/repos/asf/shiro/blob/66e6b96e/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroNoRealmConfiguredFailureAnalyzer.java
----------------------------------------------------------------------
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
http://git-wip-us.apache.org/repos/asf/shiro/blob/66e6b96e/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroWebAutoConfiguration.java
----------------------------------------------------------------------
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 java.util.List;
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 @@ import org.springframework.context.annotation.Configuration;
* @since 1.4.0
*/
@Configuration
+@AutoConfigureBefore(ShiroAutoConfiguration.class)
@ConditionalOnProperty(name = "shiro.web.enabled", matchIfMissing = true)
public class ShiroWebAutoConfiguration extends AbstractShiroWebConfiguration {
@@ -88,6 +88,13 @@ public class ShiroWebAutoConfiguration extends AbstractShiroWebConfiguration {
@Bean
@ConditionalOnMissingBean
@Override
+ protected SubjectFactory subjectFactory() {
+ return super.subjectFactory();
+ }
+
+ @Bean
+ @ConditionalOnMissingBean
+ @Override
protected SessionFactory sessionFactory() {
return super.sessionFactory();
}
@@ -100,67 +107,44 @@ public class ShiroWebAutoConfiguration extends AbstractShiroWebConfiguration {
}
@Bean
- @ConditionalOnMissingBean(name = "sessionCookieTemplate")
+ @ConditionalOnMissingBean
@Override
- protected Cookie sessionCookieTemplate() {
- return super.sessionCookieTemplate();
+ protected SessionManager sessionManager() {
+ return super.sessionManager();
}
@Bean
@ConditionalOnMissingBean
@Override
- protected RememberMeManager rememberMeManager() {
- return super.rememberMeManager();
+ protected SessionsSecurityManager securityManager(List<Realm> realms) {
+ return super.securityManager(realms);
}
@Bean
- @ConditionalOnMissingBean(name = "rememberMeCookieTemplate")
+ @ConditionalOnMissingBean(name = "sessionCookieTemplate")
@Override
- protected Cookie rememberMeCookieTemplate() {
- return super.rememberMeCookieTemplate();
+ protected Cookie sessionCookieTemplate() {
+ return super.sessionCookieTemplate();
}
@Bean
@ConditionalOnMissingBean
@Override
- protected SubjectFactory subjectFactory() {
- return super.subjectFactory();
+ protected RememberMeManager rememberMeManager() {
+ return super.rememberMeManager();
}
@Bean
- @ConditionalOnMissingBean
+ @ConditionalOnMissingBean(name = "rememberMeCookieTemplate")
@Override
- protected SessionManager sessionManager() {
- return super.sessionManager();
+ protected Cookie rememberMeCookieTemplate() {
+ return super.rememberMeCookieTemplate();
}
@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;
+ protected ShiroFilterChainDefinition shiroFilterChainDefinition() {
+ return super.shiroFilterChainDefinition();
}
-
- @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();
- }
-
}
http://git-wip-us.apache.org/repos/asf/shiro/blob/66e6b96e/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/exception/NoRealmBeanConfiguredException.java
----------------------------------------------------------------------
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 {
-
-}
http://git-wip-us.apache.org/repos/asf/shiro/blob/66e6b96e/support/spring-boot/spring-boot-web-starter/src/main/resources/META-INF/spring.factories
----------------------------------------------------------------------
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
http://git-wip-us.apache.org/repos/asf/shiro/blob/66e6b96e/support/spring/src/main/java/org/apache/shiro/spring/config/AbstractShiroConfiguration.java
----------------------------------------------------------------------
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.ModularRealmAuthorizer;
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 @@ public class AbstractShiroConfiguration {
authenticator.setAuthenticationStrategy(authenticationStrategy());
return authenticator;
}
+
+ protected Realm iniRealmFromLocation(String iniLocation) {
+ Ini ini = Ini.fromResourcePath(iniLocation);
+ return new IniRealm( ini );
+ }
}
http://git-wip-us.apache.org/repos/asf/shiro/blob/66e6b96e/support/spring/src/main/java/org/apache/shiro/spring/web/config/AbstractShiroWebConfiguration.java
----------------------------------------------------------------------
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 @@ public class AbstractShiroWebConfiguration extends AbstractShiroConfiguration {
return securityManager;
}
+ protected ShiroFilterChainDefinition shiroFilterChainDefinition() {
+ DefaultShiroFilterChainDefinition chainDefinition = new DefaultShiroFilterChainDefinition();
+ chainDefinition.addPathDefinition("/**", "authc");
+ return chainDefinition;
+ }
}
http://git-wip-us.apache.org/repos/asf/shiro/blob/66e6b96e/support/spring/src/main/java/org/apache/shiro/spring/web/config/ShiroWebConfiguration.java
----------------------------------------------------------------------
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 @@ public class ShiroWebConfiguration extends AbstractShiroWebConfiguration {
return super.securityManager(realms);
}
+ @Bean
+ @Override
+ protected ShiroFilterChainDefinition shiroFilterChainDefinition() {
+ return super.shiroFilterChainDefinition();
+ }
}
[3/3] shiro git commit: SHIRO-559 Remove checked exception on
@PreDestroy in ShiroModule
Posted by bd...@apache.org.
SHIRO-559 Remove checked exception on @PreDestroy in ShiroModule
Required by Glassfish, possibly other containers per spec: https://docs.oracle.com/javaee/7/api/javax/annotation/PreDestroy.html
Project: http://git-wip-us.apache.org/repos/asf/shiro/repo
Commit: http://git-wip-us.apache.org/repos/asf/shiro/commit/b12d70e6
Tree: http://git-wip-us.apache.org/repos/asf/shiro/tree/b12d70e6
Diff: http://git-wip-us.apache.org/repos/asf/shiro/diff/b12d70e6
Branch: refs/heads/master
Commit: b12d70e60bcee29aa811f57525d21a787d42501c
Parents: 66e6b96
Author: Brian Demers <bd...@apache.org>
Authored: Sun Apr 30 22:08:59 2017 -0400
Committer: Brian Demers <bd...@apache.org>
Committed: Sun Apr 30 22:11:46 2017 -0400
----------------------------------------------------------------------
.../java/org/apache/shiro/guice/ShiroModule.java | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/shiro/blob/b12d70e6/support/guice/src/main/java/org/apache/shiro/guice/ShiroModule.java
----------------------------------------------------------------------
diff --git a/support/guice/src/main/java/org/apache/shiro/guice/ShiroModule.java b/support/guice/src/main/java/org/apache/shiro/guice/ShiroModule.java
index 2eac73d..3abbe95 100644
--- a/support/guice/src/main/java/org/apache/shiro/guice/ShiroModule.java
+++ b/support/guice/src/main/java/org/apache/shiro/guice/ShiroModule.java
@@ -29,7 +29,6 @@ import javax.annotation.PreDestroy;
import com.google.inject.Provider;
import com.google.inject.matcher.Matchers;
-import com.google.inject.name.Names;
import com.google.inject.spi.InjectionListener;
import com.google.inject.spi.TypeEncounter;
import com.google.inject.spi.TypeListener;
@@ -54,6 +53,8 @@ import com.google.inject.binder.AnnotatedBindingBuilder;
import com.google.inject.binder.LinkedBindingBuilder;
import com.google.inject.multibindings.Multibinder;
import com.google.inject.util.Types;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
@@ -63,6 +64,8 @@ import com.google.inject.util.Types;
*/
public abstract class ShiroModule extends PrivateModule implements Destroyable {
+ private final Logger log = LoggerFactory.getLogger(ShiroModule.class);
+
private Set<Destroyable> destroyables = Collections.newSetFromMap(new WeakHashMap<Destroyable, Boolean>());
public void configure() {
// setup security manager
@@ -79,7 +82,7 @@ public abstract class ShiroModule extends PrivateModule implements Destroyable {
}
@PreDestroy
- public void destroy() throws Exception {
+ public void destroy() {
ShiroModule.this.destroy();
}
};
@@ -184,9 +187,14 @@ public abstract class ShiroModule extends PrivateModule implements Destroyable {
*
* @throws Exception
*/
- public final void destroy() throws Exception {
+ public final void destroy() {
for (Destroyable destroyable : destroyables) {
- destroyable.destroy();
+ try {
+ destroyable.destroy();
+ }
+ catch(Exception e) {
+ log.warn("Error destroying component class: " + destroyable.getClass(), e);
+ }
}
}