From 50bb0eec92dc0be4a870565c14f94cfdd5fe6351 Mon Sep 17 00:00:00 2001 From: xm Date: Wed, 29 Sep 2021 17:55:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B3=A8=E9=94=80=E4=B9=8B=E5=89=8D=E7=9A=84se?= =?UTF-8?q?ssion,=E4=BF=AE=E5=A4=8D=E4=B9=8B=E5=89=8D=E7=9A=84bug=EF=BC=8C?= =?UTF-8?q?=E8=A7=A6=E5=8F=91=E6=9D=A1=E4=BB=B6=EF=BC=9A=E5=90=8C=E4=B8=80?= =?UTF-8?q?=E6=B5=8F=E8=A7=88=E5=99=A8=E6=89=93=E7=99=BB=E5=BD=95=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manage/controller/LoginController.java | 9 ++++--- .../java/com/manage/service/LoginService.java | 27 ++++++------------- 2 files changed, 14 insertions(+), 22 deletions(-) diff --git a/power-admin/src/main/java/com/manage/controller/LoginController.java b/power-admin/src/main/java/com/manage/controller/LoginController.java index 8ec86c7..23ea903 100644 --- a/power-admin/src/main/java/com/manage/controller/LoginController.java +++ b/power-admin/src/main/java/com/manage/controller/LoginController.java @@ -40,15 +40,18 @@ public class LoginController { LoginService loginService; @RequestMapping(value = "login",method = RequestMethod.GET) - public String toLogin(Model model){ + public String toLogin(Model model ,HttpServletRequest request){ CacheManager.addExcCount("noExc"); + //同一浏览器打开login,直接触发注销登录session + loginService.removeOldUserOnLogin(request); + return "loginDir/login"; } @RequestMapping(value = "login",method = RequestMethod.POST) public String login(Power_User powerUser,HttpServletResponse response, HttpServletRequest request,Model model){ - //2021/9/23实际校验调用 - loginService.checkOnlyOneUser(request); + //同一浏览器打开login,直接触发注销登录session + loginService.removeOldUserOnLogin(request); try { Power_UserVo user = powerUserService.findPowerUserByUserNameAndUserPwd(powerUser); diff --git a/power-admin/src/main/java/com/manage/service/LoginService.java b/power-admin/src/main/java/com/manage/service/LoginService.java index 859ebf0..689e303 100644 --- a/power-admin/src/main/java/com/manage/service/LoginService.java +++ b/power-admin/src/main/java/com/manage/service/LoginService.java @@ -8,28 +8,17 @@ import java.util.HashMap; /** * @author 谢铭 - * @date 2021/9/23 - * 校验是否同一ip、同一浏览器下多用户登陆,并且移除符合条件的session - * hashmap全局存储用户,利用hashmap去重保持同一浏览器同一ip,只有一个session信息被保存 + * @date 2021/9/29 + * 注销之前的session,修复之前的bug + * 触发条件:同一浏览器打开登录页 */ @Service public class LoginService { - private static HashMap userIdMap = new HashMap<>(); - - public void checkOnlyOneUser(HttpServletRequest request) { - //key,ip+ua共同构成单用户识别码 - String ip = request.getRemoteAddr(); - String ua = request.getHeader("user-agent"); - String key = ip + ua; - //value为session - HttpSession session = request.getSession(); - //判断是否存在key,存在就执行session过期的方法 - if (userIdMap.containsKey(key)) { - //非空就是保存过,就清理指定sessionId对应的session,处理完正常登录 - userIdMap.get(key).invalidate(); + public void removeOldUserOnLogin(HttpServletRequest request) { + if (null != request.getSession(false)&&!"".equals(request.getSession(false))) { + //直接注销之前session + request.getSession(false).invalidate(); } - //放入新的key,value,正常登陆 - userIdMap.put(key, session); } -} +} \ No newline at end of file