diff --git a/src/main/java/com/tools/common/shiro/KickoutSessionControlFilter.java b/src/main/java/com/tools/common/shiro/KickoutSessionControlFilter.java index 626545b3eaf5439d70487d643ffb09154d67d818..e604f760d7d96c15f5de66bd1d1787f35530a488 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 11c4371b84d34145efd53082b05de0eed6bf7504..015d74689b062adea32b1f5d8f1f7a63353422cb 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; }