From f7f8e9cc7de686fe3e8ef424f1d50fa821255449 Mon Sep 17 00:00:00 2001 From: whycxzp <perryhsu@163.com> Date: 星期六, 23 一月 2021 17:30:48 +0800 Subject: [PATCH] update --- src/main/java/com/whyc/config/ShiroConfig.java | 76 +++++++++++++++++++++++++++++++++++++ 1 files changed, 75 insertions(+), 1 deletions(-) diff --git a/src/main/java/com/whyc/config/ShiroConfig.java b/src/main/java/com/whyc/config/ShiroConfig.java index 402477a..8c8b1be 100644 --- a/src/main/java/com/whyc/config/ShiroConfig.java +++ b/src/main/java/com/whyc/config/ShiroConfig.java @@ -3,17 +3,29 @@ import com.whyc.filter.KickedOutFilter; import com.whyc.filter.RolesOrAuthorizationFilter; import com.whyc.properties.PropertiesUtil; +import com.whyc.properties.RedisProperties; +import com.whyc.properties.ShiroRedisProperties; import com.whyc.realm.CustomRealm; import lombok.extern.log4j.Log4j; import lombok.extern.log4j.Log4j2; +import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.session.mgt.SessionManager; +import org.apache.shiro.session.mgt.eis.SessionDAO; import org.apache.shiro.spring.LifecycleBeanPostProcessor; import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor; import org.apache.shiro.spring.web.ShiroFilterFactoryBean; import org.apache.shiro.web.filter.authz.RolesAuthorizationFilter; import org.apache.shiro.web.mgt.DefaultWebSecurityManager; +import org.apache.shiro.web.servlet.SimpleCookie; +import org.apache.shiro.web.session.mgt.DefaultWebSessionManager; +import org.redisson.Redisson; +import org.redisson.api.RedissonClient; +import org.redisson.config.Config; import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.DependsOn; @@ -27,17 +39,79 @@ * 鏆傛椂鎻愪緵鏉冮檺绠$悊,浼氳瘽绠$悊鍚庣画鏇存柊 TODO */ @Configuration -//@Log4j2 +@Slf4j +@EnableConfigurationProperties({RedisProperties.class}) public class ShiroConfig { @Autowired CustomRealm customRealm; + @Autowired + RedisProperties redisProperties; + + /*================Session閲囩敤Redis鍒嗗竷寮廠ession===================*/ + + /** + * Redisson瀹㈡埛绔�,鍒濆鍖� + *//* + @Bean(name = "redissonClient4Shiro") + public RedissonClient redissonClient(){ + log.info("======鍒濆鍖杛edissonClient4Shiro======"); + String[] nodeList = shiroRedisProperties.getNodes().split(","); + Config config = new Config(); + if(nodeList.length==1){ + config.useSingleServer().setAddress(nodeList[0]) + .setConnectTimeout(shiroRedisProperties.getConnectTimeout()) + .setConnectionPoolSize(shiroRedisProperties.getConnectPoolSize()) + .setConnectionMinimumIdleSize(shiroRedisProperties.getConnectMinIdleSize()) + .setTimeout(shiroRedisProperties.getTimeout()); + }else{ + config.useClusterServers().addNodeAddress(nodeList) + .setConnectTimeout(shiroRedisProperties.getConnectTimeout()) + .setMasterConnectionPoolSize(shiroRedisProperties.getConnectPoolSize()) + .setMasterConnectionMinimumIdleSize(shiroRedisProperties.getConnectMinIdleSize()) + .setTimeout(shiroRedisProperties.getTimeout()); + } + + RedissonClient redissonClient = Redisson.create(config); + return redissonClient; + }*/ + + /** + * 鍒濆鍖朢edisSessionDao + */ + @Bean("redisSessionDao") + @DependsOn("redisClient") + public SessionDAO redisSessionDao(){ + RedisSessionDao redisSessionDao = new RedisSessionDao(redisProperties.getGlobalSessionTimeout()); + return redisSessionDao; + } + + /**Session绠$悊鍣�*/ + @Bean("sessionManager") + @DependsOn("redisSessionDao") + public DefaultWebSessionManager shiroSessionManager(){ + DefaultWebSessionManager sessionManager = new DefaultWebSessionManager(); + //璁剧疆Session鍙傛暟 + sessionManager.setSessionDAO(redisSessionDao()); + sessionManager.setSessionValidationSchedulerEnabled(false); + sessionManager.setSessionIdCookieEnabled(true); + + SimpleCookie simpleCookie = new SimpleCookie("ShiroSession"); + sessionManager.setSessionIdCookie(simpleCookie); + sessionManager.setGlobalSessionTimeout(redisProperties.getGlobalSessionTimeout()); + return sessionManager; + } + + /*====================鏉冮檺绠$悊=======================*/ + /**鏉冮檺绠$悊鍣�*/ @Bean(name = "securityManager") + @DependsOn("sessionManager") public DefaultWebSecurityManager defaultWebSecurityManager(){ DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); securityManager.setRealm(customRealm); + securityManager.setSessionManager(shiroSessionManager()); return securityManager; } -- Gitblit v1.9.1