Ver Fonte

提交代码

há 6 meses atrás
pai
commit
51989a1163

+ 2 - 1
08.src/Xingxi/xingxi-admin/src/main/resources/application-local.yml

@@ -72,7 +72,8 @@ spring:
         host: redis.njnet.vip
         port: 6379
         password: Biandan123
-        timeout: 200000ms           # 连接超时时长(毫秒)
+        timeout: 6000ms           # 连接超时时长(毫秒)
+        expireTime: 1000          # 连接超时时长(毫秒)
         lettuce:
             pool:
                 max-active: 1000  # 连接池最大连接数(使用负值表示没有限制)

+ 1 - 1
08.src/Xingxi/xingxi-admin/src/main/resources/application.yml

@@ -115,7 +115,7 @@ shiro:
     cipherKey:
   session:
     # Session超时时间,-1代表永不过期(默认30分钟)
-    expireTime: 30
+    expireTime: -1
     # 同步session到数据库的周期(默认1分钟)
     dbSyncPeriod: 1
     # 相隔多久检查一次session的有效性,默认就是10分钟

+ 25 - 42
08.src/Xingxi/xingxi-framework/src/main/java/com/xingxi/framework/config/ShiroConfig.java

@@ -33,14 +33,16 @@ import java.util.Map;
 /**
  * 权限配置加载
  *
- * @author biandan
+ * @author xingxi
  */
 @Configuration
-public class ShiroConfig
-{
+public class ShiroConfig {
     /**
      * Session超时时间,单位为毫秒(默认30分钟)
      */
+    @Value("${spring.redis.expireTime}")
+    private int redisTimeOut;
+
     @Value("${shiro.session.expireTime}")
     private int expireTime;
 
@@ -150,8 +152,7 @@ public class ShiroConfig
      * Cache Manager (shiro-redis)
      */
     @Bean
-    public RedisCacheManager redisCacheManager()
-    {
+    public RedisCacheManager redisCacheManager() {
         RedisCacheManager redisCacheManager = new RedisCacheManager();
         redisCacheManager.setRedisManager(redisManager());
         redisCacheManager.setPrincipalIdFieldName("userId");
@@ -162,16 +163,14 @@ public class ShiroConfig
      * RedisManager (shiro-redis)
      */
     @Bean
-    public RedisManager redisManager()
-    {
+    public RedisManager redisManager() {
         RedisManager redisManager = new RedisManager();
         redisManager.setHost(redisHost + ":" + redisPort);
         redisManager.setDatabase(database);
-        if (StringUtils.isNotEmpty(password))
-        {
+        if (StringUtils.isNotEmpty(password)) {
             redisManager.setPassword(password);
         }
-        redisManager.setTimeout(expireTime * 60);
+        redisManager.setTimeout(redisTimeOut * 60);
         return redisManager;
     }
 
@@ -214,8 +213,7 @@ public class ShiroConfig
      * 自定义Realm
      */
     @Bean
-    public UserRealm userRealm()
-    {
+    public UserRealm userRealm() {
         UserRealm userRealm = new UserRealm();
         userRealm.setAuthorizationCacheName(Constants.SYS_AUTH_CACHE);
         userRealm.setCacheManager(redisCacheManager());
@@ -226,11 +224,10 @@ public class ShiroConfig
      * RedisSessionDAO (shiro-redis)
      */
     @Bean
-    public RedisSessionDAO redisSessionDAO()
-    {
+    public RedisSessionDAO redisSessionDAO() {
         RedisSessionDAO redisSessionDAO = new RedisSessionDAO();
         redisSessionDAO.setRedisManager(redisManager());
-        redisSessionDAO.setExpire(expireTime * 60);
+        redisSessionDAO.setExpire(redisTimeOut * 60);
         return redisSessionDAO;
     }
 
@@ -256,8 +253,7 @@ public class ShiroConfig
      * 会话管理器
      */
     @Bean
-    public SessionManager sessionManager()
-    {
+    public SessionManager sessionManager() {
         DefaultWebSessionManager manager = new DefaultWebSessionManager();
         // 加入缓存管理器
         manager.setCacheManager(redisCacheManager());
@@ -274,8 +270,7 @@ public class ShiroConfig
      * 安全管理器
      */
     @Bean
-    public SecurityManager securityManager(UserRealm userRealm)
-    {
+    public SecurityManager securityManager(UserRealm userRealm) {
         DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
         // 设置realm.
         securityManager.setRealm(userRealm);
@@ -291,8 +286,7 @@ public class ShiroConfig
     /**
      * 退出过滤器
      */
-    public LogoutFilter logoutFilter()
-    {
+    public LogoutFilter logoutFilter() {
         LogoutFilter logoutFilter = new LogoutFilter();
         logoutFilter.setLoginUrl(loginUrl);
         logoutFilter.setCacheManager(redisCacheManager());
@@ -303,8 +297,7 @@ public class ShiroConfig
      * Shiro过滤器配置
      */
     @Bean
-    public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager)
-    {
+    public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) {
         CustomShiroFilterFactoryBean shiroFilterFactoryBean = new CustomShiroFilterFactoryBean();
         // Shiro的核心安全接口,这个属性是必须的
         shiroFilterFactoryBean.setSecurityManager(securityManager);
@@ -376,8 +369,7 @@ public class ShiroConfig
     /**
      * 自定义验证码过滤器
      */
-    public CaptchaValidateFilter captchaValidateFilter()
-    {
+    public CaptchaValidateFilter captchaValidateFilter() {
         CaptchaValidateFilter captchaValidateFilter = new CaptchaValidateFilter();
         captchaValidateFilter.setCaptchaEnabled(captchaEnabled);
         captchaValidateFilter.setCaptchaType(captchaType);
@@ -387,8 +379,7 @@ public class ShiroConfig
     /**
      * cookie 属性设置
      */
-    public SimpleCookie rememberMeCookie()
-    {
+    public SimpleCookie rememberMeCookie() {
         SimpleCookie cookie = new SimpleCookie("rememberMe");
         cookie.setDomain(domain);
         cookie.setPath(path);
@@ -400,16 +391,12 @@ public class ShiroConfig
     /**
      * 记住我
      */
-    public CookieRememberMeManager rememberMeManager()
-    {
+    public CookieRememberMeManager rememberMeManager() {
         CookieRememberMeManager cookieRememberMeManager = new CookieRememberMeManager();
         cookieRememberMeManager.setCookie(rememberMeCookie());
-        if (StringUtils.isNotEmpty(cipherKey))
-        {
+        if (StringUtils.isNotEmpty(cipherKey)) {
             cookieRememberMeManager.setCipherKey(Base64.decode(cipherKey));
-        }
-        else
-        {
+        } else {
             cookieRememberMeManager.setCipherKey(CipherUtils.generateNewKey(128, "AES").getEncoded());
         }
         return cookieRememberMeManager;
@@ -418,8 +405,7 @@ public class ShiroConfig
     /**
      * 同一个用户多设备登录限制
      */
-    public KickoutSessionFilter kickoutSessionFilter()
-    {
+    public KickoutSessionFilter kickoutSessionFilter() {
         KickoutSessionFilter kickoutSessionFilter = new KickoutSessionFilter();
         kickoutSessionFilter.setCacheManager(redisCacheManager());
         kickoutSessionFilter.setSessionManager(sessionManager());
@@ -436,8 +422,7 @@ public class ShiroConfig
      * thymeleaf模板引擎和shiro框架的整合
      */
     @Bean
-    public ShiroDialect shiroDialect()
-    {
+    public ShiroDialect shiroDialect() {
         return new ShiroDialect();
     }
 
@@ -445,16 +430,14 @@ public class ShiroConfig
      * 开启Shiro注解通知器
      */
     @Bean
-    public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager)
-    {
+    public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
         AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();
         authorizationAttributeSourceAdvisor.setSecurityManager(securityManager);
         return authorizationAttributeSourceAdvisor;
     }
 
     @Bean
-    public static DefaultAdvisorAutoProxyCreator getDefaultAdvisorAutoProxyCreator()
-    {
+    public static DefaultAdvisorAutoProxyCreator getDefaultAdvisorAutoProxyCreator() {
         DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator();
         defaultAdvisorAutoProxyCreator.setUsePrefix(true);
         return defaultAdvisorAutoProxyCreator;