diff --git a/src/main/java/com/wb/domainserver/domain/mngr/login/MngrLoginController.java b/src/main/java/com/wb/domainserver/domain/mngr/login/MngrLoginController.java index 8d27e6e0..ce4ca58a 100644 --- a/src/main/java/com/wb/domainserver/domain/mngr/login/MngrLoginController.java +++ b/src/main/java/com/wb/domainserver/domain/mngr/login/MngrLoginController.java @@ -197,11 +197,12 @@ public class MngrLoginController { log.debug("리프레쉬 토큰이 없는 경우 realm :: {}", realm); //엑세스토큰 삭제 - CookieUtils.deleteCookie("ACT","/"+realm, request, response); - CookieUtils.deleteCookie("token_expire","/"+realm, request, response); + CookieUtils.deleteCookie("ACT","/", request, response); + CookieUtils.deleteCookie("RFT","/" + realm + "/tokens/refresh", request, response); + CookieUtils.deleteCookie("token_expire","/", request, response); response.sendRedirect("/"+realm); - + return; } //리프레쉬 토큰 있을 경우(존재한다는 자체가 refresh토큰이 만료된 상태가 아님) diff --git a/src/main/java/com/wb/domainserver/interceptor/mngr/MngrLoggingInterceptor.java b/src/main/java/com/wb/domainserver/interceptor/mngr/MngrLoggingInterceptor.java index d85dbd5e..4717cd66 100644 --- a/src/main/java/com/wb/domainserver/interceptor/mngr/MngrLoggingInterceptor.java +++ b/src/main/java/com/wb/domainserver/interceptor/mngr/MngrLoggingInterceptor.java @@ -371,7 +371,9 @@ public class MngrLoggingInterceptor implements HandlerInterceptor { String cookieValue = agentId + ":" + md5(agentId + ":" + md5(System.currentTimeMillis() + ":" + random.nextInt())).substring(5, 10); Cookie agentIdCookie = new Cookie("agent_id", cookieValue); agentIdCookie.setMaxAge(86400 * 365 * 10); // 10년 - agentIdCookie.setDomain(domain); + if (!request.getServerName().startsWith("loc.")) { + agentIdCookie.setDomain(domain); + } // agentIdCookie.setHttpOnly(true); agentIdCookie.setPath("/mngr"); // agentIdCookie.setSecure(true); diff --git a/src/main/java/com/wb/domainserver/util/CookieUtils.java b/src/main/java/com/wb/domainserver/util/CookieUtils.java index 4eecb700..89bc8f50 100644 --- a/src/main/java/com/wb/domainserver/util/CookieUtils.java +++ b/src/main/java/com/wb/domainserver/util/CookieUtils.java @@ -44,9 +44,12 @@ public abstract class CookieUtils { Cookie cookie = new Cookie(name, null); cookie.setMaxAge(0); cookie.setPath(path); - cookie.setDomain(originHost); + setCookieDomain(cookie, request, originHost); cookie.setHttpOnly(true); response.addCookie(cookie); + + // loc 환경에서는 이전에 상위 도메인으로 저장된 쿠키도 함께 삭제한다. + deleteLegacyDomainCookie(name, path, request, response, originHost); } public static void createCookie(String name, String value, String path, int maxAge, boolean httpOnly, HttpServletRequest request, HttpServletResponse response) { @@ -58,10 +61,12 @@ public abstract class CookieUtils { String originHost = UrlExtractor.getOriginalHost(host); + deleteLegacyDomainCookie(name, path, request, response, originHost); + Cookie cookie = new Cookie(name, value); cookie.setMaxAge(maxAge); cookie.setPath(path); - cookie.setDomain(originHost); + setCookieDomain(cookie, request, originHost); cookie.setHttpOnly(httpOnly); response.addCookie(cookie); } @@ -77,7 +82,7 @@ public abstract class CookieUtils { Cookie cookie = new Cookie(name, value); cookie.setPath(path); - cookie.setDomain(originHost); + setCookieDomain(cookie, request, originHost); cookie.setHttpOnly(httpOnly); response.addCookie(cookie); } @@ -96,4 +101,30 @@ public abstract class CookieUtils { return Map.of("ACTPath", ACTPath, "RFTPath", RFTPath); } + private static void setCookieDomain(Cookie cookie, HttpServletRequest request, String domain) { + if (!request.getServerName().startsWith("loc.")) { + cookie.setDomain(domain); + } + } + + private static void deleteLegacyDomainCookie(String name, String path, HttpServletRequest request, HttpServletResponse response, String domain) { + if (request.getServerName().startsWith("loc.")) { + addDomainDeleteCookie(name, path, domain, response); + + int firstDot = domain.indexOf('.'); + if (firstDot > 0) { + addDomainDeleteCookie(name, path, domain.substring(firstDot + 1), response); + } + } + } + + private static void addDomainDeleteCookie(String name, String path, String domain, HttpServletResponse response) { + Cookie domainCookie = new Cookie(name, null); + domainCookie.setMaxAge(0); + domainCookie.setPath(path); + domainCookie.setDomain(domain); + domainCookie.setHttpOnly(true); + response.addCookie(domainCookie); + } + } diff --git a/src/main/resources/mybatis/xml/mapper/gcone/bbs/gnrlbbsctt/BOGnrlbbscttMapper.xml b/src/main/resources/mybatis/xml/mapper/gcone/bbs/gnrlbbsctt/BOGnrlbbscttMapper.xml index 50845673..f0de3acf 100644 --- a/src/main/resources/mybatis/xml/mapper/gcone/bbs/gnrlbbsctt/BOGnrlbbscttMapper.xml +++ b/src/main/resources/mybatis/xml/mapper/gcone/bbs/gnrlbbsctt/BOGnrlbbscttMapper.xml @@ -2659,7 +2659,7 @@ AND FGI.IMG_KND = '02' AND FGI.CUT_NB = 1 LIMIT 1 - ) AS GOODS_IMG_COURS + ) AS IMG ,FG.GOODS_NM ,FG.GOODS_ICON_CD AS ICON_CD_NM_LIST ,FG.SRT_DC AS REPRSNT_DC diff --git a/src/main/webapp/WEB-INF/views/mngr/bbs/gnrlsctt/GnrlBbscttUpdtPopupU.jsp b/src/main/webapp/WEB-INF/views/mngr/bbs/gnrlsctt/GnrlBbscttUpdtPopupU.jsp index c7b2e5b5..d532a868 100644 --- a/src/main/webapp/WEB-INF/views/mngr/bbs/gnrlsctt/GnrlBbscttUpdtPopupU.jsp +++ b/src/main/webapp/WEB-INF/views/mngr/bbs/gnrlsctt/GnrlBbscttUpdtPopupU.jsp @@ -486,7 +486,7 @@ @@ -904,4 +904,4 @@ var inputElement = $('input[type="file"].dz-hidden-input'); inputElement.attr('name', 'files'); inputElement.attr('id', 'fileUploadDrop'); - \ No newline at end of file +