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