diff --git a/WebContent/jsp/common/screen/emergency.jsp b/WebContent/jsp/common/screen/emergency.jsp index 0af95ef..48998ca 100644 --- a/WebContent/jsp/common/screen/emergency.jsp +++ b/WebContent/jsp/common/screen/emergency.jsp @@ -121,8 +121,9 @@ alert("휴대폰번호가 등록되어 있지 않아 로그인할 수 없습니다. 관리자에게 문의하세요") } else if (response.errorMessage == 'FAIL_SEND_AUTH') { alert("인증번호 발송에 실패했습니다. 잠시 후 다시 시도해주세요.") + } else if (response.errorMessage == 'NOT_ALLOWED_IP') { + alert("허용되지 않은 IP에서 접속하였습니다") } else { - // 로그인 실패 alert('로그인에 실패했습니다'); } } diff --git a/src/main/java/com/eactive/eai/rms/common/login/MainController.java b/src/main/java/com/eactive/eai/rms/common/login/MainController.java index d24f0f1..9ac4818 100644 --- a/src/main/java/com/eactive/eai/rms/common/login/MainController.java +++ b/src/main/java/com/eactive/eai/rms/common/login/MainController.java @@ -441,23 +441,18 @@ public class MainController implements InterceptorSkipController { return null; } - //logger.info("사용자 ip: " + userInfo.getAllowip()); - //logger.info("사용자 계정 role: " + userInfo.getRoleidnfiname()); - //logger.info("사용자 계정 admin? " + userInfo.getRoleidnfiname().contains("admin")); - - /* craft - boolean adminYn = userInfo.getRoleidnfiname().contains("admin"); - - if(adminYn) { - - if(userInfo.getAllowip() == null || (userInfo.getLastloginip() != userInfo.getAllowip())) { - setLoginFailure(request, session, "login.checkallowip1", - "login.checkallowip2"); - return null; + // 접속 허용 IP(allowIp)가 설정된 사용자는 그 IP에서만 로그인 가능 (미설정이면 제한 없음) + // 전체 사용자 대상 (admin만이 아님). lastloginip(직전 로그인 IP, 로그인 성공 후에야 갱신됨)이 아니라 + // 이번 요청의 실제 클라이언트 IP(IpUtil, 프록시 헤더 고려)와 비교해야 한다. + if (StringUtils.isNotBlank(userInfo.getAllowip())) { + String clientIp = IpUtil.getClientIp(request); + if (!userInfo.getAllowip().trim().equals(clientIp)) { + UserAccessLogger.log(request, LOG_CATEGORY_LOGIN, "F", + "허용되지 않은 IP에서 로그인 시도 - userId: " + userInfo.getUserid() + ", clientIp: " + clientIp); + session.setAttribute(RESULT_MSG, "NOT_ALLOWED_IP"); + return null; } - } - */ String loginMode = System.getProperty("login.mode"); if("db".equals(loginMode) || "DB".equals(loginMode)) {