로그인된 상태에서 홈페이지 접근하면 자동로그인 되도록 변경
eapim-admin CI / build (push) Waiting to run

This commit is contained in:
eastargh
2026-09-17 11:18:48 +09:00
parent c3ad216ac9
commit daa82084e8
3 changed files with 73 additions and 8 deletions
@@ -0,0 +1,33 @@
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%--
이미 로그인된 세션으로 loginForm.do 에 접근한 경우의 bounce 화면.
serviceType은 서버(세션)에 지속 저장되는 값이 아니라 브라우저 localStorage에만 있으므로,
루트 emergency.jsp와 동일하게 여기서 localStorage를 읽어 main.do URL에 붙여준다.
(없이 넘어가면 이 탭의 sessionStorage.serviceType이 비어 custom.js의 $.ajax 자동주입 값이
비게 되어, 새 탭에서 연 화면의 조회 API 호출들이 serviceType 없이 나간다)
--%>
<!DOCTYPE html>
<html>
<head>
<script language="javascript">
var contextPath = "<%=request.getContextPath()%>";
var mainPage = "${mainPage}";
var serviceType = localStorage["serviceType"];
var mainUrl = contextPath + "/main.do";
var params = [];
if (mainPage) {
params.push("mainPage=" + encodeURIComponent(mainPage));
}
if (serviceType) {
params.push("serviceType=" + encodeURIComponent(serviceType));
}
if (params.length > 0) {
mainUrl += "?" + params.join("&");
}
window.location.replace(mainUrl);
</script>
</head>
</html>
+20 -6
View File
@@ -221,9 +221,9 @@ pull 이후 또는 Q-class IDE 오류 시 `./gradlew compileJava` (또는 `clean
| 운영 | 실제 D'amo 네이티브 라이브러리 |
| 개발 | SHA-256 |
로컬 개발 시 `-Ddamo-manager.enabled=false`
`-Ddamo-manager.enabled=false` 으로 설정하면 bypass 한다
## DJB (제주은행) 전용 설정
## 제주은행 전용 설정
DJB 전용 프로퍼티는 DB 테이블 `TSEAIRM24` 에 그룹명 `'Monitoring'` 과
DB 테이블 `PTL_PROPERTY` 에 그룹명 `'Portal'` 로 저장된다.
@@ -320,6 +320,24 @@ DB 테이블 `PTL_PROPERTY` 에 그룹명 `'Portal'` 로 저장된다.
**토큰발급이력삭제**
- `TOKENISSUANCELOGCLEANUPJOB` - 7일이 지난 토큰 발급내역을 삭제한다
## IIM 연동 - 제주은행 커스텀
**인터페이스**
- 최초 연동시 APIM에 등록되지 않은 경우에만 인터페이스를 생성한다.
- 기본정보(API명, 업무구분, 요청/응답, 당타발)만 등록되며 업데이트는 하지 않는다
- interface id의 9번째 문자가 `D` 가 아니면 `D`를 추가하여 개발용 인터페이스를 추가로 생성한다
- (ex : `ASAPICOROEBB082802S2S2` 인 경우, `ASAPICORDOEBB082802S2S2` 를 추가로 생성한다)
- 개발용 인터페이스가 필요없는 경우, APIM에서 개발용 인터페이스를 삭제한다 (차후 개발용 전문 추가 생성 방지)
**전문레이아웃**
- 연동시 기존의 전문을 삭제하고 등록한다.
- 인터페이스와 동일하게 `D`가 아니면 동일한 레이아웃으로 개발용 전문을 추가로 생성한다
- (ex : `OPF_ASAPICOROEBB082802S2S2_SRCS` 인 경우, `OPF_ASAPICORDOEBB082802S2S2_SRCS` 를 추가로 생성한다)
- 전문이 등록된 후 API 관리화면에서 필요한 정보를 입력하고 **수정버튼을 클릭하여 G/W에 반영된다**
**연동이력**
- 연동 이력은 `환경정보 > EMS관리 > 연동 배포 이력` 메뉴에서 조회한다.
## 배포
| 대상 | 비고 |
@@ -358,10 +376,6 @@ IntelliJ 전용 변형은 `build.gradle.intellij` 로 별도 관리합니다 (
./gradlew test --tests "com.eactive.eai.rms.*"
```
## 문서
- **프로젝트 상세 지침**: `CLAUDE.md` (AI 어시스턴트 및 개발자용 마스터 문서, 한글)
- **사용자 가이드**: `WebContent/guide/` (docsify)
## 라이선스
@@ -125,8 +125,6 @@ public class MainController implements InterceptorSkipController {
public String loginForm(HttpServletRequest request, Model model) {
boolean fullScreen = request.getParameter("fullScreen") != null;
boolean emergencyMode = request.getParameter("emergency") != null;
model.addAttribute("fullScreen", fullScreen);
model.addAttribute("emergencyMode", emergencyMode);
// 세션에 비상모드 저장 (SMS 인증 우회용)
HttpSession session = request.getSession();
@@ -138,6 +136,26 @@ public class MainController implements InterceptorSkipController {
savePendingDeepLink(request, session);
// 이미 로그인된 세션이면 로그인 화면을 다시 보여주지 않고, 정상 로그인 성공시와 동일한 화면으로 바로 이동한다.
// (fullScreen/emergencyMode는 로그인 화면 전용 model 속성이라 여기서는 채우지 않는다 - RedirectView가
// model의 단순타입 속성을 리다이렉트 URL 쿼리파라미터로 자동 노출(exposeModelAttributes=true)하기 때문에,
// 미리 채워두면 main.do?fullScreen=false&emergencyMode=false 처럼 의도치 않은 파라미터가 붙는다)
//
// serviceType은 서버에 지속 저장되지 않고 브라우저 localStorage에만 있으므로 서버에서 바로
// redirect:/main.do 로 보내면 이 값이 빠진다 - 이 탭의 sessionStorage.serviceType이 비어
// custom.js의 $.ajax 자동주입(serviceType)도 비게 되어, 이후 이 탭에서 여는 화면의 조회
// API 호출들이 serviceType 없이 나간다. 루트 emergency.jsp와 동일하게 mainRedirect.jsp에서
// localStorage를 읽어 main.do URL에 붙이도록 우회한다.
boolean isDualLogin = monitoringContext.getBooleanProperty(MonitoringContext.RMS_DUAL_LOGIN_ENABLED, true);
if (SessionManager.isValidSession(request, isDualLogin)) {
String deepLinkMainPage = consumePendingDeepLinkMainPage(request, session);
model.addAttribute("mainPage", deepLinkMainPage == null ? "" : deepLinkMainPage);
return "/common/screen/mainRedirect";
}
model.addAttribute("fullScreen", fullScreen);
model.addAttribute("emergencyMode", emergencyMode);
return "/common/screen/emergency";
}