Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/interceptor/VciSecurityInterceptor.java
@@ -128,6 +128,9 @@ sendErrorMsg(response,msg,2); return false; }else{ //åå§åå¹³å°çtoken sessionForLoginI.initInvocationInfo(sessionInfo); String systemPrivateToken = request.getHeader(TokenKeyConstant.SYSTEM_PRIVATE_KEY); try { if (sessionForLoginI.checkRequestRights(request, systemPrivateToken, sessionInfo, handler)) { Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/interceptor/VciSessionForLoginI.java
@@ -97,4 +97,10 @@ * @param sessionInfo sessionçä¿¡æ¯ */ void refreshToken(String key, SessionInfo sessionInfo); /** * å°tokenæ¾å ¥å¹³å°ä¸ * @param sessionInfo */ void initInvocationInfo(SessionInfo sessionInfo); } Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/pagemodel/RequestClientInfo.java
@@ -51,6 +51,31 @@ */ private String ssoToken; /** * æä½ç³»ç» */ private String osName; /** * æä½ç³»ç»ç¨æ· */ private String osUser; /** * æºå¨å */ private String machine; /** * æä½ç³»ç»è¯è¨ */ private String language; /** * æä½ç³»ç»è®¾ç½®çå½å®¶ */ private String country; public String getRequestType() { return requestType; } @@ -115,6 +140,46 @@ this.ssoToken = ssoToken; } public String getOsName() { return osName; } public void setOsName(String osName) { this.osName = osName; } public String getOsUser() { return osUser; } public void setOsUser(String osUser) { this.osUser = osUser; } public String getMachine() { return machine; } public void setMachine(String machine) { this.machine = machine; } public String getLanguage() { return language; } public void setLanguage(String language) { this.language = language; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } @Override public String toString() { return "RequestClientInfo{" + @@ -126,6 +191,11 @@ ", sso=" + sso + ", ssoSystemName='" + ssoSystemName + '\'' + ", ssoToken='" + ssoToken + '\'' + ", osName='" + osName + '\'' + ", osUser='" + osUser + '\'' + ", machine='" + machine + '\'' + ", language='" + language + '\'' + ", country='" + country + '\'' + '}'; } } Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/pagemodel/SessionInfo.java
@@ -29,6 +29,10 @@ */ private String deptOid; /** * æå±é¨é¨ç¼å· */ private String deptNum; /** * æå±é¨é¨åç§° */ private String deptName; @@ -624,12 +628,21 @@ this.lastLoginTime = lastLoginTime; } public String getDeptNum() { return deptNum; } public void setDeptNum(String deptNum) { this.deptNum = deptNum; } @Override public String toString() { return "SessionInfo{" + "orgsOid='" + orgsOid + '\'' + ", orgsName='" + orgsName + '\'' + ", deptOid='" + deptOid + '\'' + ", deptNum='" + deptNum + '\'' + ", deptName='" + deptName + '\'' + ", userOid='" + userOid + '\'' + ", userId='" + userId + '\'' + Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmSessionForLoginImpl.java
@@ -1,6 +1,8 @@ package com.vci.frameworkcore.compatibility.impl; import com.vci.client.mw.ClientSessionUtility; import com.vci.corba.common.PLException; import com.vci.corba.common.data.InvocationInfo; import com.vci.corba.omd.data.AttributeValue; import com.vci.starter.web.annotation.log.VciUnLog; import com.vci.starter.web.constant.TokenKeyConstant; @@ -342,4 +344,16 @@ String userToken = JwtUtils.getUserToken(jwtToken); return TokenKeyConstant.TOKEN_KEY_PREFIX_IN_REDIS + userToken; } /** * å°tokenæ¾å ¥å¹³å°ä¸ * * @param sessionInfo */ @Override public void initInvocationInfo(SessionInfo sessionInfo) { InvocationInfo vcii = new InvocationInfo(); vcii.setToken(sessionInfo.getToken()); ClientSessionUtility.setInvocationInThread(vcii); } } Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/constant/FrameWorkBusLangCodeConstant.java
@@ -540,4 +540,9 @@ * å¯ç çç¥å·²ç»ä¿®æ¹ï¼éä¿®æ¹è´¦å·å¯ç */ public static final String PASSWORD_POLICY_UPDATED = "passwordPolicyUpdated"; /** * tokenå¼ä¸ºç©º */ public static final String TOKEN_EMPTY = "tokenEmpty"; } Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/LoginController.java
@@ -17,7 +17,6 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @@ -27,7 +26,10 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.security.Principal; import java.util.*; import java.util.Enumeration; import java.util.HashMap; import java.util.Locale; import java.util.Map; /** * ç»å½æ§å¶å¨ @@ -256,6 +258,14 @@ clientInfo.setRequestType("browser"); } } Locale loc = Locale.getDefault(); clientInfo.setCountry(loc.getCountry()); clientInfo.setLanguage(loc.toLanguageTag()); Map<String,String> map = System.getenv(); clientInfo.setMachine(map.get("COMPUTERNAME")); clientInfo.setOsUser(map.get("USERNAME")); } } Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/initTask/VciWebInitTaskComponent.java
@@ -12,7 +12,6 @@ import com.vci.starter.web.annotation.config.VciConfigModule; import com.vci.starter.web.enumpck.SessionStorageTypeEnum; import com.vci.starter.web.enumpck.UserSecretEnum; import com.vci.starter.web.interceptor.VciSessionForLoginI; import com.vci.starter.web.pagemodel.SessionInfo; import com.vci.starter.web.properties.VciSessionProperties; import com.vci.starter.web.util.ApplicationContextProvider; @@ -22,10 +21,7 @@ import com.vci.web.properties.WebProperties; import com.vci.web.service.OsAttributeServiceI; import com.vci.web.service.VciMdServiceI; import com.vci.web.service.WebSecretServiceI; import com.vci.web.service.impl.UIEngineServiceImpl; import com.vci.web.service.impl.WebContextInfoFetcher; import com.vci.web.service.impl.WebInitServiceImpl; import com.vci.web.util.PlatformClientUtil; import com.vci.web.util.WebUtil; import org.apache.commons.lang3.StringUtils; @@ -37,16 +33,14 @@ import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; import org.springframework.util.ResourceUtils; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.*; import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.stream.Collectors; @@ -58,29 +52,16 @@ @Component public class VciWebInitTaskComponent implements ApplicationRunner { /** * æ¥å¿å¯¹è±¡ */ private Logger logger = LoggerFactory.getLogger(getClass()); /** * åå§åçæå¡ */ @Autowired private WebInitServiceImpl initService; /** * æ¯å¦å ¼å®¹ */ @Value("${user-table-compatibility:}") private String compatibility; /** * ä¸ä¸ææ³¨å */ @Autowired private WebContextInfoFetcher contextInfoFetcher; /** * é 置对象 @@ -101,11 +82,6 @@ private VciSessionProperties sessionProperties; /** * ä¼è¯å¤ç */ @Autowired private VciSessionForLoginI sessionForLogin; /** * å¼å ¥å ¼å®¹çé ç½® */ @Autowired(required = false) @@ -122,12 +98,6 @@ */ @Autowired private VciMdServiceI mdService; /** * å¯çº§æå¡ */ @Autowired private WebSecretServiceI secretService; /** 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,16 +172,28 @@ } //4ãè°ç¨å¹³å°ç»å½æ¥å£ï¼è¿è¡ç»å½ 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,10 +296,25 @@ user.setPwdWrongCount(0); SessionInfo sessionInfo = new SessionInfo(); sessionInfo.setToken(token); //åå§åå¹³å°çtoken sessionForLogin.initInvocationInfo(sessionInfo); //æ·è´ç¨æ·çæ°å°sessionä¼è¯ä¸ copyUser2SessionInfo(user, sessionInfo, userDTO.getLangCode()); //æ·è´è¯·æ±ä¿¡æ¯å°sessionä¼è¯ä¸ 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); @@ -305,14 +333,21 @@ 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; } /** @@ -399,6 +434,7 @@ if(sessionForLogin == null){ throw new VciBaseException("没æé ç½®ä¼è¯åå¨çæå¡"); } WebThreadLocalUtil.setCurrentUserSessionInfoInThread(sessionInfo); return sessionForLogin.createToken(sessionInfo); } Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebContextInfoFetcher.java
ÎļþÒÑɾ³ý Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/PlatformClientUtil.java
@@ -1,6 +1,6 @@ package com.vci.web.util; import com.vci.client.common.providers.ClientServiceProvider; import com.vci.client.common.providers.WebServiceProvider; import com.vci.corba.bofactory.BOFactoryServicePrx; import com.vci.corba.common.PLException; import com.vci.corba.framework.FrameworkServicePrx; @@ -87,7 +87,7 @@ * @return æå¡ç对象 */ public BOFactoryServicePrx getBOFactoryService(){ return ClientServiceProvider.getBOFService(); return WebServiceProvider.getBOFService(); } /** @@ -95,7 +95,7 @@ * @return æå¡ç对象 */ public WorkflowServicePrx getWorkflowService(){ return ClientServiceProvider.getWFService(); return WebServiceProvider.getWFService(); } /** @@ -103,7 +103,7 @@ * @Return æå¡ç对象 */ public FrameworkServicePrx getFrameworkService(){ return ClientServiceProvider.getFrameService(); return WebServiceProvider.getFrameService(); } /** @@ -111,7 +111,7 @@ * @return æå¡ç对象 */ public StatePoolServicePrx getStatePoolService() throws PLException { return ClientServiceProvider.getOMDService().getStateService(); return WebServiceProvider.getOMDService().getStateService(); } /** @@ -119,7 +119,7 @@ * @return çå½å¨æçæå¡å¯¹è±¡ */ public LifeCycleServicePrx getLifeCycleService() throws PLException { return ClientServiceProvider.getOMDService().getLifeCycleService(); return WebServiceProvider.getOMDService().getLifeCycleService(); } /** @@ -127,7 +127,7 @@ * @return æä¸¾çæå¡å¯¹è±¡ */ public EnumServicePrx getEnumService() throws PLException { return ClientServiceProvider.getOMDService().getEnumService(); return WebServiceProvider.getOMDService().getEnumService(); } /** @@ -135,7 +135,7 @@ * @return çæ¬è§åçæå¡ */ public VersionRuleServicePrx getVersionService() throws PLException { return ClientServiceProvider.getOMDService().getVerRuleService(); return WebServiceProvider.getOMDService().getVerRuleService(); } /** @@ -143,7 +143,7 @@ * @return æå¡ç对象 */ public AttPoolServicePrx getAttributeService() throws PLException { return ClientServiceProvider.getOMDService().getAttributeService(); return WebServiceProvider.getOMDService().getAttributeService(); } /** @@ -151,7 +151,7 @@ * @return æå¡ç对象 */ public BTMServicePrx getBtmService() throws PLException { return ClientServiceProvider.getOMDService().getBTMService(); return WebServiceProvider.getOMDService().getBTMService(); } /** @@ -159,7 +159,7 @@ * @return æå¡ç对象 */ public LinkTypeServicePrx getLinkTypeService() throws PLException { return ClientServiceProvider.getOMDService().getLinkTypeService(); return WebServiceProvider.getOMDService().getLinkTypeService(); } /** @@ -167,7 +167,7 @@ * @return æå¡ç对象 */ public PortalServicePrx getPortalService(){ return ClientServiceProvider.getUIService(); return WebServiceProvider.getUIService(); } /** @@ -175,7 +175,7 @@ * @return æå¡ç对象 */ public ObjectQueryServicePrx getQueryService(){ return ClientServiceProvider.getOQService(); return WebServiceProvider.getOQService(); } /** @@ -184,7 +184,7 @@ * @return å·æå¡çç对象 */ public VolumeServicePrx getVolumeService(String volumeName){ return ClientServiceProvider.getVolumeService(volumeName); return WebServiceProvider.getVolumeService(volumeName); } /** @@ -192,7 +192,7 @@ * @return å·æå¡çç对象 */ public QTDServicePrx getQTDService() throws PLException { return ClientServiceProvider.getOMDService().getQTDService(); return WebServiceProvider.getOMDService().getQTDService(); } /** @@ -202,7 +202,7 @@ * @return å·æå¡çç对象 */ public String[][] getSqlQueryService(String sql, AttributeValue[] attrVals) throws PLException { return ClientServiceProvider.getBOFService().getSqlQueryResult(sql, attrVals); return WebServiceProvider.getBOFService().getSqlQueryResult(sql, attrVals); } /** @@ -210,7 +210,7 @@ * @Return com.vci.corba.log.LogServicePrx */ public LogServicePrx getLogService(){ return ClientServiceProvider.getLogService(); return WebServiceProvider.getLogService(); } /** @@ -218,7 +218,7 @@ * @return */ public PortalServicePrx getUIService(){ return ClientServiceProvider.getUIService(); return WebServiceProvider.getUIService(); } /** @@ -226,6 +226,6 @@ * @return */ public BOFactoryServicePrx getBOFService() { return ClientServiceProvider.getBOFService(); return WebServiceProvider.getBOFService(); } } Source/plt-web/plt-web-parent/plt-web/src/main/resources/i18n/messages.properties
@@ -76,6 +76,7 @@ passwordInit=\u8D26\u53F7\u5BC6\u7801\u4E3A\u521D\u59CB\u5BC6\u7801\uFF0C\u9700\u8981\u4FEE\u6539\u540E\u624D\u80FD\u767B\u5F55 passwordExpire=\u5BC6\u7801\u5DF2\u8FC7\u671F passwordPolicyUpdated=\u5BC6\u7801\u7B56\u7565\u5DF2\u7ECF\u4FEE\u6539\uFF0C\u9700\u4FEE\u6539\u8D26\u53F7\u5BC6\u7801 tokenEmpty=token\u4E3A\u7A7A #########\u7CFB\u7EDF\u8D44\u6E90\u76F8\u5173###### com.vci.web.menu.noHasFunction= {0}\u6CA1\u6709\u4EFB\u4F55\u7684\u6743\u9650 Source/plt-web/plt-web-parent/plt-web/src/main/resources/i18n/messages_zh_CN.properties
@@ -76,6 +76,7 @@ passwordInit=\u8D26\u53F7\u5BC6\u7801\u4E3A\u521D\u59CB\u5BC6\u7801\uFF0C\u9700\u8981\u4FEE\u6539\u540E\u624D\u80FD\u767B\u5F55 passwordExpire=\u5BC6\u7801\u5DF2\u8FC7\u671F passwordPolicyUpdated=\u5BC6\u7801\u7B56\u7565\u5DF2\u7ECF\u4FEE\u6539\uFF0C\u9700\u4FEE\u6539\u8D26\u53F7\u5BC6\u7801 tokenEmpty=token\u4E3A\u7A7A #########\u7CFB\u7EDF\u8D44\u6E90\u76F8\u5173###### com.vci.web.menu.noHasFunction= {0}\u6CA1\u6709\u4EFB\u4F55\u7684\u6743\u9650