From d93badf93a299219d3fce2b4026455cfa6a870c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E6=9F=922012?= <345849402@qq.com> Date: Sun, 24 May 2020 17:24:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=97=B6=E7=99=BB=E5=BD=95=E4=BA=BA?= =?UTF-8?q?=E6=95=B0=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tools/common/shiro/KickoutSessionControlFilter.java | 9 +++++---- src/main/java/com/tools/common/shiro/ShiroConfig.java | 4 ++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/tools/common/shiro/KickoutSessionControlFilter.java b/src/main/java/com/tools/common/shiro/KickoutSessionControlFilter.java index 626545b..e604f76 100644 --- a/src/main/java/com/tools/common/shiro/KickoutSessionControlFilter.java +++ b/src/main/java/com/tools/common/shiro/KickoutSessionControlFilter.java @@ -57,6 +57,7 @@ public class KickoutSessionControlFilter extends AccessControlFilter { @Override protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception { + Subject subject = getSubject(request, response); if(!subject.isAuthenticated() && !subject.isRemembered()) { //如果没有登录,直接进行之后的流程 @@ -87,7 +88,7 @@ public class KickoutSessionControlFilter extends AccessControlFilter { //如果队列里的sessionId数超出最大会话数,开始踢人 while(deque.size() > maxSession) { - Serializable kickoutSessionId = null; + Serializable kickoutSessionId; if(kickoutAfter) { //如果踢出后者 kickoutSessionId = deque.removeFirst(); //踢出后再更新下缓存队列 @@ -133,10 +134,10 @@ public class KickoutSessionControlFilter extends AccessControlFilter { } return true; } - private void out(ServletResponse hresponse, Map resultMap){ + private void out(ServletResponse response, Map resultMap){ try { - hresponse.setCharacterEncoding("UTF-8"); - PrintWriter out = hresponse.getWriter(); + response.setCharacterEncoding("UTF-8"); + PrintWriter out = response.getWriter(); //out.println(JSON.toJSONString(resultMap)); out.println(resultMap); out.flush(); diff --git a/src/main/java/com/tools/common/shiro/ShiroConfig.java b/src/main/java/com/tools/common/shiro/ShiroConfig.java index 11c4371..015d746 100644 --- a/src/main/java/com/tools/common/shiro/ShiroConfig.java +++ b/src/main/java/com/tools/common/shiro/ShiroConfig.java @@ -83,7 +83,7 @@ public class ShiroConfig { * 管理后台 */ filterChainDefinitionMap.put("/sys/**", "roles[admin]"); - filterChainDefinitionMap.put("/**", "authc"); + filterChainDefinitionMap.put("/**", "kickout,authc"); shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap); return shiroFilterFactoryBean; } @@ -158,7 +158,7 @@ public class ShiroConfig { kickoutSessionControlFilter.setCacheManager(cacheManager()); kickoutSessionControlFilter.setSessionManager(sessionManager()); kickoutSessionControlFilter.setKickoutAfter(false); - kickoutSessionControlFilter.setMaxSession(1); + kickoutSessionControlFilter.setMaxSession(10); kickoutSessionControlFilter.setKickoutUrl("/login.html"); return kickoutSessionControlFilter; } -- GitLab