From 5a432554d02e1e33d0053c815952e475616b2071 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=AA=E4=BA=91=E6=98=8A?= Date: Thu, 6 Aug 2020 01:41:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=9A=E8=AF=9D=E6=A8=A1=E5=BC=8F=E9=85=8D?= =?UTF-8?q?=E7=BD=AE-=E8=B0=83=E6=95=B4=E9=BB=98=E8=AE=A4=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/base/WhiteController.java | 6 +++- .../serviceimpl/busi/SysUserService.java | 34 ++++++++++++---------- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java index d526769..7674183 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java @@ -161,7 +161,11 @@ public class WhiteController extends CoreBaseController { ValidatorBean.checkNotNull(loginName,"用户名不能为空"); ValidatorBean.checkNotNull(loginPwd,"密码不能为空"); ValidatorBean.checkNotNull(languageCode,"语言不能为空"); - logout(); + + int sessionMode = RedisCacheTool.getSysConfigIntVal(CommonConstWords.CONFIG_SESSION_MODE, CommonConstWords.CONFIG_SESSION_MODE_DEFAULT); + if (sessionMode != CommonEnumUtil.SESSION_MODE.SEIZE.getValue()) { + logout(); + } SessionUser user = userService.queryUserLogin(loginName.trim(), loginPwd.trim(), languageCode, getLoginPlatform().getValue(),deviceId); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java index 4521286..0fde42f 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java @@ -152,7 +152,7 @@ public class SysUserService implements ISysUserService { throw new CredentialsException("用户不存在"); } // 判断会话模式 - checkSessionMode(user.getId()); + checkSessionMode(loginPlatform,user.getId()); packSessionUser(sessionUser, user, user.getUserType(),loginPlatform, languageCode,deviceId); packConfigSessionUser(sessionUser, user); @@ -163,21 +163,25 @@ public class SysUserService implements ISysUserService { return sessionUser; } - private void checkSessionMode(Long userId){ - int sessionMode = RedisCacheTool.getSysConfigIntVal(CommonConstWords.CONFIG_SESSION_MODE, - CommonEnumUtil.SESSION_MODE.OVERWRITE.getValue()); - if (sessionMode == CommonEnumUtil.SESSION_MODE.SEIZE.getValue()) { - String redisKey = CommonConstWords.SESSION_USER + ":*_" + userId; - List ds = redisSession.scan(redisKey); + private void checkSessionMode(Integer loginPlatform,Long userId){ + int sessionMode = RedisCacheTool.getSysConfigIntVal(CommonConstWords.CONFIG_SESSION_MODE,CommonConstWords.CONFIG_SESSION_MODE_DEFAULT); + String redisKey; + if (sessionMode == CommonEnumUtil.SESSION_MODE.DEFAULT.getValue()) { + redisKey = CommonConstWords.SESSION_USER + ":" + loginPlatform + "_" + userId; + } else if (sessionMode == CommonEnumUtil.SESSION_MODE.SEIZE.getValue()) { + redisKey = CommonConstWords.SESSION_USER + ":*_" + userId; + }else { + return; + } - if (CollectionUtils.isNotEmpty(ds)) { - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) - .setErrorCode(ImppExceptionEnum.LOGIN_EXCEPTION_LOGGED.getCode()) - .setErrorDetail("用户已在其他设备登录,无法同时登录!") - .setErrorSolution("请联系管理员") - .build(); - } + List ds = redisSession.scan(redisKey); + if (CollectionUtils.isNotEmpty(ds)) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.LOGIN_EXCEPTION_LOGGED.getCode()) + .setErrorDetail("用户已在其他设备登录,无法同时登录!") + .setErrorSolution("请联系管理员") + .build(); } }