From 36496957ffdc22851d57e6b7a2fc73ae4490f537 Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期二, 18 六月 2024 17:55:50 +0800
Subject: [PATCH] 完善退出登录-实现登录后获取用户信息存储到本地
---
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LoginServiceImpl.java | 56 ++++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 46 insertions(+), 10 deletions(-)
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LoginServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LoginServiceImpl.java
index 5d8706a..1c81410 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LoginServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LoginServiceImpl.java
@@ -1,8 +1,12 @@
package com.vci.web.service.impl;
-import com.vci.client.logon.base.LogonHandler;
+import com.vci.client.mw.ClientSessionUtility;
+import com.vci.corba.common.PLException;
+import com.vci.corba.common.data.InvocationInfo;
+import com.vci.corba.framework.data.DeptInfo;
import com.vci.corba.framework.data.LoginResult;
import com.vci.corba.framework.data.LoginState;
+import com.vci.corba.framework.data.MachineInfo;
import com.vci.frameworkcore.ajaxTask.SmUserUnLockTask;
import com.vci.frameworkcore.ajaxTask.SmUserUnLockTaskManager;
import com.vci.frameworkcore.compatibility.ISmFunctionQueryService;
@@ -13,7 +17,6 @@
import com.vci.starter.web.annotation.bus.VciLoginAfter;
import com.vci.starter.web.annotation.bus.VciLogoutBefore;
import com.vci.starter.web.annotation.bus.VciLogoutPlugin;
-import com.vci.starter.web.constant.TokenKeyConstant;
import com.vci.starter.web.exception.VciBaseException;
import com.vci.starter.web.interceptor.VciSessionForLoginI;
import com.vci.starter.web.pagemodel.RequestClientInfo;
@@ -30,16 +33,14 @@
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.lang.reflect.Method;
-import java.util.ArrayList;
import java.util.Date;
-import java.util.HashMap;
import java.util.Map;
-import java.util.concurrent.TimeUnit;
import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.*;
@@ -171,19 +172,31 @@
}
//4銆佽皟鐢ㄥ钩鍙扮櫥褰曟帴鍙o紝杩涜鐧诲綍
- LogonHandler handler = new LogonHandler();
+ MachineInfo machine = getMachieInfo(clientInfo);
+ machine.country = clientInfo.getCountry();
+ machine.language = clientInfo.getLanguage();
+ machine.osUser = clientInfo.getOsUser();
+ machine.machine = clientInfo.getMachine();
+
+ String token = null;
try {
- LoginResult chkRes = handler.checkLogin(userDTO.getUserId(), userDTO.getPassword());
+ LoginResult chkRes = platformClientUtil.getFrameworkService().checkLogin(userDTO.getUserId(),userDTO.getPassword(), machine);
loginResult.setFailCode(getErrorCode(chkRes));
loginResult.setFailMsgArray(new String[]{userDTO.getUserId(), String.valueOf(chkRes.auxInfo)});
if(chkRes.state == LoginState.Error || chkRes.state == LoginState.Locked || chkRes.state == LoginState.Freeze){
return loginResult;
}
+ token = chkRes.token;
} catch (Exception e) {
loginResult.setFailCode(SYSTEM_ERROR);
loginResult.setFailMsgArray(new String[]{userDTO.getUserId()});
return loginResult;
}
+ if(StringUtils.isBlank(token)){
+ loginResult.setFailMsg(TOKEN_EMPTY);
+ loginResult.setFailMsgArray(new String[]{userDTO.getUserId()});
+ return loginResult;
+ }
//濡傛灉鐢ㄦ埛宸茬粡琚仠鐢ㄥ拰閿佸畾锛屼笉鑳界櫥褰�
//濡傛灉鐢ㄦ埛鐨勫け鏁堟棩鏈熷凡缁忚秴杩囦簡褰撳墠鏃堕棿锛屼笉鑳界櫥褰�
@@ -283,11 +296,26 @@
user.setPwdWrongCount(0);
SessionInfo sessionInfo = new SessionInfo();
+ sessionInfo.setToken(token);
+
+ //鍒濆鍖栧钩鍙扮殑token
+ sessionForLogin.initInvocationInfo(sessionInfo);
+
//鎷疯礉鐢ㄦ埛鐨勬柊鍒皊ession浼氳瘽涓�
copyUser2SessionInfo(user, sessionInfo, userDTO.getLangCode());
//鎷疯礉璇锋眰淇℃伅鍒皊ession浼氳瘽涓�
copyRequest2SessionInfo(clientInfo, sessionInfo);
+ //鑾峰彇浜哄憳鎵�灞炵殑閮ㄩ棬淇℃伅
+ try {
+ DeptInfo deptInfo = platformClientUtil.getFrameworkService().fetchDeptByUserId(user.getOid());
+ sessionInfo.setDeptOid(deptInfo.id);
+ sessionInfo.setDeptName(deptInfo.name);
+ sessionInfo.setDeptNum(deptInfo.num);
+ } catch (PLException e) {
+ throw new VciBaseException("鑾峰彇鐢ㄦ埛鎵�灞為儴闂ㄥけ璐�:"+e.getMessage());
+ }
+
/** //鏌ヨ鎵�鏈夌殑瑙掕壊
List<SmRoleVO> roleVOList = roleQueryService.listRoleByUserOid(user.getOid(), null);
if (!CollectionUtils.isEmpty(roleVOList)) {
@@ -305,16 +333,23 @@
sessionInfo.setFunctionOids(new ArrayList());
}*/
- loginResult.setSuccess(true);
- sessionInfo.setToken(Md5.md5(VciBaseUtil.getPk() + "_" + user.getId()));
-
//娣诲姞鍒颁細璇濅俊鎭�
TokenVO tokenVO = saveSessionInfo(sessionInfo);
loginResult.setTokenVO(tokenVO);
+ loginResult.setSuccess(true);
return loginResult;
}
+ private MachineInfo getMachieInfo(RequestClientInfo clientInfo) {
+ MachineInfo machine = new MachineInfo();
+ machine.country = clientInfo.getCountry();
+ machine.language = clientInfo.getLanguage();
+ machine.osUser = clientInfo.getOsUser();
+ machine.machine = clientInfo.getMachine();
+ return machine;
+ }
+
/**
* 鑾峰彇鐢ㄦ埛淇℃伅
* @param userId userId
@@ -399,6 +434,7 @@
if(sessionForLogin == null){
throw new VciBaseException("娌℃湁閰嶇疆浼氳瘽瀛樺偍鐨勬湇鍔�");
}
+ WebThreadLocalUtil.setCurrentUserSessionInfoInThread(sessionInfo);
return sessionForLogin.createToken(sessionInfo);
}
--
Gitblit v1.10.0