Jelajahi Sumber

자동로그인 ssl 적용여부에 따른 쿠키생성처리

LMC 4 tahun lalu
induk
melakukan
0669c87898

+ 20 - 11
src/main/java/com/style24/front/support/interceptor/TsfRememberMeInterceptor.java

@@ -12,6 +12,7 @@ import javax.servlet.http.HttpSession;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.security.core.authority.SimpleGrantedAuthority;
 import org.springframework.stereotype.Component;
 import org.springframework.web.servlet.ModelAndView;
@@ -43,31 +44,35 @@ public class TsfRememberMeInterceptor extends HandlerInterceptorAdapter {
 	@Autowired
 	private TsfLoginService loginService;
 
+	@Value("${has-ssl}")
+	private String hasSsl;
+
 	@Override
 	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+
 		// RememberMe Cookie
 		String ckRememberMe = GagaCookieUtil.getCookie(request, TsfConstants.CK_PREFIX + "_remember-me");
 
 		if (!TsfSession.getFrontGb().equals("P") && !TsfSession.isLogin() && StringUtils.isNotBlank(ckRememberMe)) {
 			// 로그인유지토큰 조회
-			PersistentToken token = loginService.getPersistentToken(ckRememberMe);
+			PersistentToken rememberToken = loginService.getPersistentToken(ckRememberMe);
 
-			if (token != null) {
+			if (rememberToken != null) {
 				Login loginParam = new Login();
-				loginParam.setCustId(token.getCustId());
+				loginParam.setCustId(rememberToken.getCustId());
 				Login loginInfo = loginService.getLoginCheckInfo(loginParam);
 
 				// 로그인 성공 시 로그인실패수가 0보다 크면 로그인실패수 reset
-				int failCnt = loginService.getLoginFailCount(token.getCustId());
+				int failCnt = loginService.getLoginFailCount(rememberToken.getCustId());
 				if (failCnt > 0) {
-					loginService.createLoginFail(token.getCustId(), "N");
+					loginService.createLoginFail(rememberToken.getCustId(), "N");
 				}
 
 				// 최종로그인일시 Update
-				loginService.updateLastLoginDate(token.getCustNo());
+				loginService.updateLastLoginDate(rememberToken.getCustNo());
 
 				// 로그인이력 생성
-				loginService.createLoginHistory(token.getCustNo());
+				loginService.createLoginHistory(rememberToken.getCustNo());
 
 				// 세션 생성
 				List<SimpleGrantedAuthority> authorities = new ArrayList<>();
@@ -85,14 +90,18 @@ public class TsfRememberMeInterceptor extends HandlerInterceptorAdapter {
 //				>>>>>>> 2021-09-12 일 자동로그인 과련 이슈로 GagaDateUtil.getOffsetDate 변경처리 끝
 
 //				String md5HexToken = GagaCryptoUtil.encryptMD5(token.getCustNo() + ":" + GagaDateUtil.getDate(expiry, "yyyyMMddHHmmss") + ":" + TsfSession.getSessionId());
-				String md5HexToken = GagaCryptoUtil.encryptMD5(token.getCustNo() + ":" + expiry + ":" + TsfSession.getSessionId());
-				String remembermeToken = Base64.getEncoder().encodeToString((TsfConstants.REMEMBER_ME_KEY + ":" + md5HexToken).getBytes());
+				String md5HexToken = GagaCryptoUtil.encryptMD5(rememberToken.getCustNo() + ":" + expiry + ":" + TsfSession.getSessionId());
+				String newRemembermeToken = Base64.getEncoder().encodeToString((TsfConstants.REMEMBER_ME_KEY + ":" + md5HexToken).getBytes());
 
 				// RememberMe 쿠키 생성
-				GagaCookieUtil.setSecureCookie(response, TsfConstants.CK_PREFIX + "_remember-me", remembermeToken, TsfConstants.REMEMBER_ME_LIMIT_SECONDS);
+				if(Boolean.parseBoolean(hasSsl)) {
+					GagaCookieUtil.setSecureCookie(response, TsfConstants.CK_PREFIX + "_remember-me", newRemembermeToken, TsfConstants.REMEMBER_ME_LIMIT_SECONDS);
+				}else {
+					GagaCookieUtil.setCookie(response, TsfConstants.CK_PREFIX + "_remember-me", newRemembermeToken, TsfConstants.REMEMBER_ME_LIMIT_SECONDS);
+				}
 
 				// 로그인유지토큰 갱신
-				loginService.updatePersistentToken(token.getCustNo(), token.getRemembermeToken(), remembermeToken, expiry);
+				loginService.updatePersistentToken(rememberToken.getCustNo(), rememberToken.getRemembermeToken(), newRemembermeToken, expiry);
 			}
 		}