diff --git a/pom.xml b/pom.xml index 1606b68..6eb997f 100644 --- a/pom.xml +++ b/pom.xml @@ -42,8 +42,10 @@ tigon-mybatis-cache-redis tigon-shiro-cache tigon-shiro-cache-redis - tigon-web tigon-shiro-core + tigon-shiro-cas + tigon-shiro + tigon-web tigon-service-api tigon-service-support tigon-extjs @@ -82,21 +84,31 @@ tigon-mybatis-cache-redis ${project.version} - - me.chyxion.tigon - tigon-shiro-cache-redis - ${project.version} - me.chyxion.tigon tigon-shiro-cache ${project.version} + + me.chyxion.tigon + tigon-shiro-cache-redis + ${project.version} + me.chyxion.tigon tigon-shiro-core ${project.version} + + me.chyxion.tigon + tigon-shiro + ${project.version} + + + me.chyxion.tigon + tigon-shiro-cas + ${project.version} + me.chyxion.tigon tigon-service-api diff --git a/tigon-shiro-cache/pom.xml b/tigon-shiro-cache/pom.xml index b5fbfc2..6e12499 100644 --- a/tigon-shiro-cache/pom.xml +++ b/tigon-shiro-cache/pom.xml @@ -35,10 +35,10 @@ shiro-core 1.3.2 - - org.springframework.data - spring-data-redis - + + + + org.projectlombok diff --git a/tigon-shiro-cache/src/main/java/me/chyxion/tigon/shiro/cache/SessionCache.java b/tigon-shiro-cache/src/main/java/me/chyxion/tigon/shiro/cache/SessionCache.java index 6da3e8e..220273f 100644 --- a/tigon-shiro-cache/src/main/java/me/chyxion/tigon/shiro/cache/SessionCache.java +++ b/tigon-shiro-cache/src/main/java/me/chyxion/tigon/shiro/cache/SessionCache.java @@ -4,7 +4,7 @@ import java.io.Serializable; import org.apache.shiro.cache.Cache; import org.apache.shiro.session.Session; import javax.validation.constraints.NotNull; -import org.hibernate.validator.constraints.NotBlank; +import javax.validation.constraints.NotBlank; import org.springframework.validation.annotation.Validated; /** diff --git a/tigon-shiro-cas/.gitignore b/tigon-shiro-cas/.gitignore new file mode 100644 index 0000000..bcb9203 --- /dev/null +++ b/tigon-shiro-cas/.gitignore @@ -0,0 +1,9 @@ +.* +!.gitignore +!.gitkeep +*.iml +**/src/main/resources/application.properties +**/src/main/resources/log4j2.xml +**/src/main/resources/logback.xml +target/ +bin/ diff --git a/tigon-shiro-cas/README.md b/tigon-shiro-cas/README.md new file mode 100644 index 0000000..77cd973 --- /dev/null +++ b/tigon-shiro-cas/README.md @@ -0,0 +1 @@ +# CAS Client Shiro diff --git a/tigon-shiro-cas/pom.xml b/tigon-shiro-cas/pom.xml new file mode 100644 index 0000000..eb6446c --- /dev/null +++ b/tigon-shiro-cas/pom.xml @@ -0,0 +1,50 @@ + + + 4.0.0 + tigon-shiro-cas + jar + CAS Client Shiro + CAS Client Shiro + + + me.chyxion.tigon + tigon + 0.0.1-SNAPSHOT + ../ + + + + + me.chyxion.tigon + tigon-shiro-core + + + org.apache.shiro + shiro-spring + 1.4.0 + + + org.pac4j + pac4j-cas + 2.3.1 + + + io.buji + buji-pac4j + 3.2.0 + + + org.projectlombok + lombok + provided + + + org.springframework.boot + spring-boot-starter-test + test + + + diff --git a/tigon-shiro-cas/src/main/java/me/chyxion/tigon/shiro/cas/DefaultProfileCreator.java b/tigon-shiro-cas/src/main/java/me/chyxion/tigon/shiro/cas/DefaultProfileCreator.java new file mode 100644 index 0000000..ff55085 --- /dev/null +++ b/tigon-shiro-cas/src/main/java/me/chyxion/tigon/shiro/cas/DefaultProfileCreator.java @@ -0,0 +1,57 @@ +package me.chyxion.tigon.shiro.cas; + +import java.util.Map; +import java.util.Collection; +import lombok.extern.slf4j.Slf4j; +import java.util.function.Consumer; +import org.pac4j.core.context.WebContext; +import org.pac4j.core.profile.CommonProfile; +import org.pac4j.core.credentials.TokenCredentials; +import org.pac4j.core.profile.creator.ProfileCreator; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Jun 23, 2018 16:17:53 + */ +@Slf4j +public class DefaultProfileCreator implements ProfileCreator { + + @Autowired(required = false) + private UserProfileProvider userProfileProvider; + + /** + * {@inheritDoc} + */ + @Override + public CommonProfile create(final TokenCredentials credentials, final WebContext context) { + log.debug("Create user profile from credentials [{}].", credentials); + + final CommonProfile userProfile = credentials.getUserProfile(); + if (userProfileProvider != null) { + log.debug("User profile provider [{}] found.", userProfileProvider); + final UserProfileProvider.UserProfile userProfileResult = + userProfileProvider.getUserProfile(userProfile.getId()); + if (userProfileResult != null) { + applyIfNotEmpty(userProfileResult.getRoles(), userProfile::addRoles); + applyIfNotEmpty(userProfileResult.getPermissions(), userProfile::addPermissions); + applyIfNotEmpty(userProfileResult.getAttrs(), userProfile::addAttributes); + applyIfNotEmpty(userProfileResult.getAuthAttrs(), userProfile::addAuthenticationAttributes); + } + } + return userProfile; + } + + private void applyIfNotEmpty(final Collection data, final Consumer> consumer) { + if (data != null && !data.isEmpty()) { + consumer.accept(data); + } + } + + private void applyIfNotEmpty(final Map data, final Consumer> consumer) { + if (data != null && !data.isEmpty()) { + consumer.accept(data); + } + } +} diff --git a/tigon-shiro-cas/src/main/java/me/chyxion/tigon/shiro/cas/UserProfileProvider.java b/tigon-shiro-cas/src/main/java/me/chyxion/tigon/shiro/cas/UserProfileProvider.java new file mode 100644 index 0000000..4299142 --- /dev/null +++ b/tigon-shiro-cas/src/main/java/me/chyxion/tigon/shiro/cas/UserProfileProvider.java @@ -0,0 +1,28 @@ +package me.chyxion.tigon.shiro.cas; + +import lombok.Getter; +import lombok.Setter; +import java.util.Map; +import java.util.Set; +import javax.validation.constraints.NotBlank; +import org.springframework.validation.annotation.Validated; + +/** + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Jun 26, 2018 21:57:43 + */ +@Validated +public interface UserProfileProvider { + + @Getter + @Setter + class UserProfile { + private Set roles; + private Set permissions; + private Map attrs; + private Map authAttrs; + } + + UserProfile getUserProfile(@NotBlank String account); +} diff --git a/tigon-shiro-cas/src/main/resources/spring/spring-shiro-cas.xml b/tigon-shiro-cas/src/main/resources/spring/spring-shiro-cas.xml new file mode 100644 index 0000000..a4e690b --- /dev/null +++ b/tigon-shiro-cas/src/main/resources/spring/spring-shiro-cas.xml @@ -0,0 +1,68 @@ + + + Shiro CAS Configuration + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tigon-shiro-cas/src/test/java/me/chyxion/tigon/shiro/cas/TestDriver.java b/tigon-shiro-cas/src/test/java/me/chyxion/tigon/shiro/cas/TestDriver.java new file mode 100644 index 0000000..188eb0c --- /dev/null +++ b/tigon-shiro-cas/src/test/java/me/chyxion/tigon/shiro/cas/TestDriver.java @@ -0,0 +1,20 @@ +package me.chyxion.tigon.shiro.cas; + +import org.junit.Test; +import lombok.extern.slf4j.Slf4j; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Donghuang
+ * donghuang@wacai.com
+ * Sep 1, 2015 2:34:08 PM + */ +@Slf4j +public class TestDriver { + + @Test + public void test() { + + } +} diff --git a/tigon-shiro-cas/src/test/resources/spring/spring-test.xml b/tigon-shiro-cas/src/test/resources/spring/spring-test.xml new file mode 100644 index 0000000..704a597 --- /dev/null +++ b/tigon-shiro-cas/src/test/resources/spring/spring-test.xml @@ -0,0 +1,7 @@ + + + + diff --git a/tigon-shiro-core/pom.xml b/tigon-shiro-core/pom.xml index 8c19dd8..5f95473 100644 --- a/tigon-shiro-core/pom.xml +++ b/tigon-shiro-core/pom.xml @@ -17,6 +17,10 @@ + + org.springframework.boot + spring-boot + me.chyxion.tigon tigon-sequence @@ -24,20 +28,12 @@ org.apache.shiro shiro-spring - 1.3.2 + 1.4.0 me.chyxion.tigon tigon-shiro-cache - - me.chyxion.tigon - tigon-web - - - org.springframework.boot - spring-boot - org.projectlombok lombok diff --git a/tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/AuthConfigFactory.java b/tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/AuthConfigFactory.java deleted file mode 100644 index bc3cdab..0000000 --- a/tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/AuthConfigFactory.java +++ /dev/null @@ -1,115 +0,0 @@ -package me.chyxion.tigon.shiro; - -import java.util.Map; -import java.util.Set; -import org.slf4j.Logger; -import java.io.IOException; -import java.io.InputStream; -import java.util.Properties; -import javax.servlet.Filter; -import org.slf4j.LoggerFactory; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import javax.annotation.PostConstruct; -import me.chyxion.tigon.webmvc.JSONViewConfig; -import me.chyxion.tigon.webmvc.util.ResponseTool; -import me.chyxion.tigon.webmvc.exception.ExceptionMessage; -import org.springframework.beans.factory.annotation.Autowired; - -/** - * @version 0.0.1 - * @since 0.0.1 - * @author Shaun Chyxion
- * chyxion@163.com
- * Apr 7, 2015 4:44:04 PM - */ -public class AuthConfigFactory { - private static final Logger log = - LoggerFactory.getLogger(AuthConfigFactory.class); - @Autowired(required = false) - private AuthConfig authConfig; - @Autowired - private ResponseTool responseTool; - @Autowired - private JSONViewConfig viewConfig; - @Autowired(required = false) - private ExceptionMessage exceptionMessage; - - private UserFilterExt userFilter; - - /** - * @return filters - */ - public Map filters() { - Map filters = new LinkedHashMap(); - filters.put(AuthConfig.FILTER_USER, userFilter); - if (authConfig != null) { - authConfig.customizeFilters(filters); - } - log.info("Auth Filters [{}].", filters); - return filters; - } - - /** - * @return filter routings - */ - public Map filterRoutings() { - Map routings = new LinkedHashMap(); - routings.put("/assets/**", AuthConfig.FILTER_ANON); - InputStream authIn = AuthConfigFactory.class - .getResourceAsStream("/shiro/auth.properties"); - if (authIn != null) { - Properties props = new OrderedProperties(); - try { - props.load(authIn); - } - catch (IOException e) { - throw new IllegalStateException( - "Load Auth Config Error Caused", e); - } - finally { - if (authIn != null) { - try { - authIn.close(); - } - catch (IOException e) { - // ignore - } - } - } - for (String name : props.stringPropertyNames()) { - routings.put(name, props.getProperty(name)); - } - } - log.info("Auth Filter Routings [{}].", routings); - return routings; - } - - /** - * init - */ - @PostConstruct - void init() { - userFilter = new UserFilterExt( - responseTool, viewConfig, exceptionMessage); - } - - static class OrderedProperties extends Properties { - private static final long serialVersionUID = 1L; - private final Set keys = new LinkedHashSet(); - - public Object put(Object key, Object value) { - keys.add((String) key); - return super.put(key, value); - } - - @SuppressWarnings({ "rawtypes", "unchecked" }) - public Set keySet() { - return keys; - } - - public Set stringPropertyNames() { - return keys; - } - } -} diff --git a/tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/FilterChainDefinitionMap.java b/tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/FilterChainDefinitionMap.java new file mode 100644 index 0000000..751306e --- /dev/null +++ b/tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/FilterChainDefinitionMap.java @@ -0,0 +1,93 @@ +package me.chyxion.tigon.shiro; + +import lombok.Getter; +import lombok.Setter; +import java.util.Set; +import java.util.Properties; +import java.io.IOException; +import java.io.InputStream; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import lombok.extern.slf4j.Slf4j; +import javax.annotation.PostConstruct; +import org.springframework.core.io.Resource; + +/** + * @author Donghuang
+ * donghuang@wacai.com
+ * Jun 27, 2018 10:42 + */ +@Slf4j +@Getter +@Setter +public class FilterChainDefinitionMap extends LinkedHashMap { + private Resource configLocation; + + @PostConstruct + void init() throws IOException { + log.info("Load shiro filter chain definition from config location [{}].", configLocation); + + final InputStream authIn = configLocation != null && configLocation.exists() ? + configLocation.getInputStream() : + FilterChainDefinitionMap.class + .getResourceAsStream("/shiro/auth.properties"); + + if (authIn != null) { + final Properties props = new OrderedProperties(); + try { + props.load(authIn); + } + catch (IOException e) { + throw new IllegalStateException( + "Load shiro filter chain definition config error caused", e); + } + finally { + if (authIn != null) { + try { + authIn.close(); + } + catch (IOException e) { + // ignore + } + } + } + + for (String name : props.stringPropertyNames()) { + put(name, props.getProperty(name)); + } + } + } + + @Slf4j + static class OrderedProperties extends Properties { + private static final long serialVersionUID = 1L; + private final Set keys = new LinkedHashSet<>(); + + /** + * {@inheritDoc} + */ + @Override + public Object put(Object key, Object value) { + log.debug("Load shiro filter chain [{}] -> [{}].", key, value); + keys.add((String) key); + return super.put(key, value); + } + + /** + * {@inheritDoc} + */ + @Override + @SuppressWarnings({ "rawtypes", "unchecked" }) + public Set keySet() { + return keys; + } + + /** + * {@inheritDoc} + */ + @Override + public Set stringPropertyNames() { + return keys; + } + } +} diff --git a/tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/SessionListenerExt.java b/tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/SessionListenerExt.java deleted file mode 100644 index c11c478..0000000 --- a/tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/SessionListenerExt.java +++ /dev/null @@ -1,21 +0,0 @@ -package me.chyxion.tigon.shiro; - -import org.apache.shiro.session.Session; -import org.apache.shiro.session.SessionListener; - -/** - * @version 0.0.1 - * @since 0.0.1 - * @author Shaun Chyxion
- * chyxion@163.com
- * May 14, 2016 2:09:26 PM - */ -public interface SessionListenerExt extends SessionListener { - - /** - * on session validation - * @param session session - * @return returns true if session has been changed - */ - boolean onValidation(Session session); -} diff --git a/tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/SessionDAOSupport.java b/tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/TigonSessionDAO.java similarity index 91% rename from tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/SessionDAOSupport.java rename to tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/TigonSessionDAO.java index 4e13439..80db7f2 100644 --- a/tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/SessionDAOSupport.java +++ b/tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/TigonSessionDAO.java @@ -23,7 +23,7 @@ import org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO; * Sep 8, 2014 7:43:05 PM */ @Slf4j -public class SessionDAOSupport extends EnterpriseCacheSessionDAO { +public class TigonSessionDAO extends EnterpriseCacheSessionDAO { @Autowired(required = false) private Cache sessionCache; @Autowired @@ -36,9 +36,9 @@ public class SessionDAOSupport extends EnterpriseCacheSessionDAO { void init() { if (sessionCache == null) { log.info("No Custom Session Store Found, Use Map Cache."); - sessionCache = new MapCache( + sessionCache = new MapCache<>( CachingSessionDAO.ACTIVE_SESSION_CACHE_NAME, - new ConcurrentHashMap()); + new ConcurrentHashMap<>(512)); } else { log.info("Use Custom Session Cache [{}].", sessionCache); diff --git a/tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/DefaultWebSecurityManagerExt.java b/tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/TigonWebSecurityManager.java similarity index 94% rename from tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/DefaultWebSecurityManagerExt.java rename to tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/TigonWebSecurityManager.java index 8284366..0f6aa2f 100644 --- a/tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/DefaultWebSecurityManagerExt.java +++ b/tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/TigonWebSecurityManager.java @@ -14,7 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired; * chyxion@163.com
* Mar 12, 2015 1:18:00 PM */ -public class DefaultWebSecurityManagerExt extends DefaultWebSecurityManager { +public class TigonWebSecurityManager extends DefaultWebSecurityManager { @Autowired(required = false) private AuthCallback authCallback; diff --git a/tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/DefaultWebSessionManagerExt.java b/tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/TigonWebSessionManager.java similarity index 91% rename from tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/DefaultWebSessionManagerExt.java rename to tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/TigonWebSessionManager.java index fff382c..a0e19c2 100644 --- a/tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/DefaultWebSessionManagerExt.java +++ b/tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/TigonWebSessionManager.java @@ -1,6 +1,8 @@ package me.chyxion.tigon.shiro; import java.util.List; + +import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import java.io.Serializable; import java.util.LinkedList; @@ -28,8 +30,8 @@ import org.apache.shiro.web.session.mgt.DefaultWebSessionManager; * chyxion@163.com
* Apr 7, 2015 2:54:25 PM */ -public class DefaultWebSessionManagerExt extends DefaultWebSessionManager { - private static final Logger log = LoggerFactory.getLogger(DefaultWebSessionManagerExt.class); +@Slf4j +public class TigonWebSessionManager extends DefaultWebSessionManager { @Autowired(required = false) private SessionIdManager sessionIdManager; @Autowired(required = false) @@ -41,7 +43,7 @@ public class DefaultWebSessionManagerExt extends DefaultWebSessionManager { @PostConstruct void init() { if (sessionListeners == null) { - sessionListeners = new LinkedList(); + sessionListeners = new LinkedList<>(); } else { log.info("Session listeners [{}] found.", sessionListeners); @@ -66,7 +68,7 @@ public class DefaultWebSessionManagerExt extends DefaultWebSessionManager { writeSessionIdCookie(sessionId, request, response); } else { - log.debug("Session id cookie is disabled. no cookie has been set for new session with id [{}]", sessionId); + log.debug("Session id cookie is disabled. no cookie has been set for new session with id [{}]", sessionId); } request.removeAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID_SOURCE); request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_IS_NEW, Boolean.TRUE); diff --git a/tigon-shiro-core/src/main/resources/spring/spring-tigon-shiro.xml b/tigon-shiro-core/src/main/resources/spring/spring-tigon-shiro-core.xml similarity index 75% rename from tigon-shiro-core/src/main/resources/spring/spring-tigon-shiro.xml rename to tigon-shiro-core/src/main/resources/spring/spring-tigon-shiro-core.xml index a401953..ea43565 100644 --- a/tigon-shiro-core/src/main/resources/spring/spring-tigon-shiro.xml +++ b/tigon-shiro-core/src/main/resources/spring/spring-tigon-shiro-core.xml @@ -4,20 +4,18 @@ xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> - Tigon Shiro Configuration + Tigon Shiro Core Configuration - - - + - + - + @@ -43,19 +41,19 @@ - - - - - - + + - - - + + + + - + + + @@ -74,6 +72,4 @@ - - diff --git a/tigon-shiro/README.md b/tigon-shiro/README.md new file mode 100644 index 0000000..247502c --- /dev/null +++ b/tigon-shiro/README.md @@ -0,0 +1 @@ +# tigon-shiro diff --git a/tigon-shiro/pom.xml b/tigon-shiro/pom.xml new file mode 100644 index 0000000..647c15f --- /dev/null +++ b/tigon-shiro/pom.xml @@ -0,0 +1,54 @@ + + + 4.0.0 + tigon-shiro + Tigon Shiro + Tigon Shiro + jar + + + me.chyxion.tigon + tigon + 0.0.1-SNAPSHOT + ../ + + + + + me.chyxion.tigon + tigon-shiro-core + + + me.chyxion.tigon + tigon-web + + + org.springframework.boot + spring-boot + + + org.projectlombok + lombok + provided + + + javax.servlet + javax.servlet-api + provided + + + + org.springframework + spring-test + test + + + junit + junit + test + + + diff --git a/tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/AuthConfig.java b/tigon-shiro/src/main/java/me/chyxion/tigon/shiro/AuthConfig.java similarity index 100% rename from tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/AuthConfig.java rename to tigon-shiro/src/main/java/me/chyxion/tigon/shiro/AuthConfig.java diff --git a/tigon-shiro/src/main/java/me/chyxion/tigon/shiro/AuthConfigFactory.java b/tigon-shiro/src/main/java/me/chyxion/tigon/shiro/AuthConfigFactory.java new file mode 100644 index 0000000..042d70e --- /dev/null +++ b/tigon-shiro/src/main/java/me/chyxion/tigon/shiro/AuthConfigFactory.java @@ -0,0 +1,56 @@ +package me.chyxion.tigon.shiro; + +import java.util.Map; +import org.slf4j.Logger; +import javax.servlet.Filter; +import org.slf4j.LoggerFactory; +import java.util.LinkedHashMap; +import javax.annotation.PostConstruct; +import me.chyxion.tigon.webmvc.JSONViewConfig; +import me.chyxion.tigon.webmvc.util.ResponseTool; +import me.chyxion.tigon.webmvc.exception.ExceptionMessage; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Apr 7, 2015 4:44:04 PM + */ +public class AuthConfigFactory { + private static final Logger log = + LoggerFactory.getLogger(AuthConfigFactory.class); + @Autowired(required = false) + private AuthConfig authConfig; + @Autowired + private ResponseTool responseTool; + @Autowired + private JSONViewConfig viewConfig; + @Autowired(required = false) + private ExceptionMessage exceptionMessage; + + private UserFilterExt userFilter; + + /** + * @return filters + */ + public Map filters() { + Map filters = new LinkedHashMap(); + filters.put(AuthConfig.FILTER_USER, userFilter); + if (authConfig != null) { + authConfig.customizeFilters(filters); + } + log.info("Auth Filters [{}].", filters); + return filters; + } + + /** + * init + */ + @PostConstruct + void init() { + userFilter = new UserFilterExt( + responseTool, viewConfig, exceptionMessage); + } +} diff --git a/tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/AuthExceptionResolver.java b/tigon-shiro/src/main/java/me/chyxion/tigon/shiro/AuthExceptionResolver.java similarity index 100% rename from tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/AuthExceptionResolver.java rename to tigon-shiro/src/main/java/me/chyxion/tigon/shiro/AuthExceptionResolver.java diff --git a/tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/AuthRealm.java b/tigon-shiro/src/main/java/me/chyxion/tigon/shiro/AuthRealm.java similarity index 100% rename from tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/AuthRealm.java rename to tigon-shiro/src/main/java/me/chyxion/tigon/shiro/AuthRealm.java diff --git a/tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/AuthorizingRealmSupport.java b/tigon-shiro/src/main/java/me/chyxion/tigon/shiro/AuthorizingRealmSupport.java similarity index 100% rename from tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/AuthorizingRealmSupport.java rename to tigon-shiro/src/main/java/me/chyxion/tigon/shiro/AuthorizingRealmSupport.java diff --git a/tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/UserFilterExt.java b/tigon-shiro/src/main/java/me/chyxion/tigon/shiro/UserFilterExt.java similarity index 100% rename from tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/UserFilterExt.java rename to tigon-shiro/src/main/java/me/chyxion/tigon/shiro/UserFilterExt.java diff --git a/tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/model/AuthInfo.java b/tigon-shiro/src/main/java/me/chyxion/tigon/shiro/model/AuthInfo.java similarity index 100% rename from tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/model/AuthInfo.java rename to tigon-shiro/src/main/java/me/chyxion/tigon/shiro/model/AuthInfo.java diff --git a/tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/model/Credential.java b/tigon-shiro/src/main/java/me/chyxion/tigon/shiro/model/Credential.java similarity index 100% rename from tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/model/Credential.java rename to tigon-shiro/src/main/java/me/chyxion/tigon/shiro/model/Credential.java diff --git a/tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/model/SerializableByteSource.java b/tigon-shiro/src/main/java/me/chyxion/tigon/shiro/model/SerializableByteSource.java similarity index 100% rename from tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/model/SerializableByteSource.java rename to tigon-shiro/src/main/java/me/chyxion/tigon/shiro/model/SerializableByteSource.java diff --git a/tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/service/AuthService.java b/tigon-shiro/src/main/java/me/chyxion/tigon/shiro/service/AuthService.java similarity index 100% rename from tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/service/AuthService.java rename to tigon-shiro/src/main/java/me/chyxion/tigon/shiro/service/AuthService.java diff --git a/tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/service/support/AuthServiceSupport.java b/tigon-shiro/src/main/java/me/chyxion/tigon/shiro/service/support/AuthServiceSupport.java similarity index 100% rename from tigon-shiro-core/src/main/java/me/chyxion/tigon/shiro/service/support/AuthServiceSupport.java rename to tigon-shiro/src/main/java/me/chyxion/tigon/shiro/service/support/AuthServiceSupport.java diff --git a/tigon-shiro/src/main/resources/spring/spring-tigon-shiro.xml b/tigon-shiro/src/main/resources/spring/spring-tigon-shiro.xml new file mode 100644 index 0000000..323ce58 --- /dev/null +++ b/tigon-shiro/src/main/resources/spring/spring-tigon-shiro.xml @@ -0,0 +1,24 @@ + + + Tigon Shiro Configuration + + + + + + + + + + + + + + + + + + diff --git a/tigon-shiro/src/test/java/me/chyxion/tigon/shiro/TestDriver.java b/tigon-shiro/src/test/java/me/chyxion/tigon/shiro/TestDriver.java new file mode 100644 index 0000000..4acf7d8 --- /dev/null +++ b/tigon-shiro/src/test/java/me/chyxion/tigon/shiro/TestDriver.java @@ -0,0 +1,17 @@ +package me.chyxion.tigon.shiro; + +import org.junit.Test; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author chyxion
+ * chyxion@163.com
+ * Mar 14, 2015 3:03:57 PM + */ +public class TestDriver { + + @Test + public void test() { + } +} diff --git a/tigon-shiro/src/test/resources/log4j.properties b/tigon-shiro/src/test/resources/log4j.properties new file mode 100644 index 0000000..7c9201a --- /dev/null +++ b/tigon-shiro/src/test/resources/log4j.properties @@ -0,0 +1,13 @@ +log4j.rootLogger=${log.root} + +log4j.appender.console=org.apache.log4j.ConsoleAppender +log4j.appender.console.layout=org.apache.log4j.PatternLayout +log4j.appender.console.Encoding=utf-8 +log4j.appender.console.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%F:%L] %m%n + +log4j.appender.file=org.apache.log4j.DailyRollingFileAppender +log4j.appender.file.layout=org.apache.log4j.PatternLayout +log4j.appender.file.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%F:%L] %m%n +log4j.appender.file.File=${log.dir}/${project.artifactId}-test.log +log4j.appender.file.Encoding=utf-8 +