terminal bug keeper

This commit is contained in:
Gao Wei 2022-06-15 16:41:36 +08:00
parent ee7c65e8d6
commit 31632aaf4b
2 changed files with 29 additions and 12 deletions

View File

@ -424,4 +424,8 @@ public class TerminalInfo {
return tm.allNames(); return tm.allNames();
} }
////专门用于切换entproj这个情况的
public static final String TEMP_SESSION_KEY = "__temp_switch_legacy_terminal__";
} }

View File

@ -240,23 +240,36 @@ public class ContextInfoBuilderAspect {
contextInfo.setOuId(nullSafeParseLong(request.getHeader(AuthConstants.HEADER_OU_ID))); contextInfo.setOuId(nullSafeParseLong(request.getHeader(AuthConstants.HEADER_OU_ID)));
contextInfo.setWorkspaceId(nullSafeParseLong(request.getHeader(AuthConstants.HEADER_WORKSPACE_ID))); contextInfo.setWorkspaceId(nullSafeParseLong(request.getHeader(AuthConstants.HEADER_WORKSPACE_ID)));
String terminalHeader = request.getHeader(AuthConstants.HEADER_TERMINAL); String terminal = retrieveTerminalByRequestAndSession(request);
String terminalSession = StpUtil.getLoginDevice();
String terminal = terminalHeader;
if (null == terminalHeader || "".equals(terminalHeader) || "0".equals(terminalHeader)) {
log.warn("请求缺少terminal headertoken={}。暂时使用session中的补齐terminal={}。", contextInfo.getToken(),
terminalSession);
terminal = terminalSession;
} else if (!TerminalInfo.legacyEquals(terminalHeader, terminalSession)) {
log.warn("请求缺少terminal header与session中不一致token={}。暂时使用request中的terminal={}session terminal={}",
contextInfo.getToken(), terminalHeader, terminalSession);
// terminal = terminalSession;
}
contextInfo.setTerminalInfo(new TerminalInfo(terminal)); contextInfo.setTerminalInfo(new TerminalInfo(terminal));
contextInfo.setVisitTo(request.getHeader(AuthConstants.VISIT_TO)); contextInfo.setVisitTo(request.getHeader(AuthConstants.VISIT_TO));
} }
private String retrieveTerminalByRequestAndSession(HttpServletRequest request) {
String terminalHeader = request.getHeader(AuthConstants.HEADER_TERMINAL);
String terminalSession = StpUtil.getSession().getString(TerminalInfo.TEMP_SESSION_KEY);
if(null != terminalSession && !"".equals(terminalSession)) {
log.warn("stp.session里面放了临时的legacy terminal看到这条信息说明这个BUG还在。");
//只有一个地方会放内容到这个临时Key里就是Perspective切换的时候
//只要这个东西存在就以此为准
return terminalSession;
}
String terminalLoginDevice = StpUtil.getLoginDevice();
if (null == terminalHeader || "".equals(terminalHeader) || "0".equals(terminalHeader)) {
log.warn("请求缺少terminal headertoken={}。暂时使用LoginDevice中的补齐terminal={}。", request.getHeader(AuthConstants.HEADER_TOKEN),
terminalSession);
return terminalLoginDevice;
} else if (!TerminalInfo.legacyEquals(terminalHeader, terminalLoginDevice)) {
log.warn("请求缺少terminal header与LoginDevice中不一致token={}。暂时使用request中的terminal={}LoginDevice terminal={}",
request.getHeader(AuthConstants.HEADER_TOKEN), terminalHeader, terminalLoginDevice);
// terminal = terminalSession;
return terminalHeader;
}
return terminalHeader;
}
public void buildUserInfo(ContextInfo contextInfo, String authResultJson) { public void buildUserInfo(ContextInfo contextInfo, String authResultJson) {
log.info("buildUserInfo-->authResultJson:{},contextInfo:{}", authResultJson, JSONUtil.toJsonStr(contextInfo)); log.info("buildUserInfo-->authResultJson:{},contextInfo:{}", authResultJson, JSONUtil.toJsonStr(contextInfo));
UserInfo userInfo = new UserInfo(); UserInfo userInfo = new UserInfo();