From 42196383bef0d5166ffffb965076a6a60efe2fb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=84=9D=20=EC=B5=9C?= Date: Tue, 27 Feb 2024 14:15:03 +0900 Subject: [PATCH] =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=9D=B8,=20=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=EC=95=84=EC=9B=83=20=EB=A1=9C=EA=B7=B8=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/logs/service/AdminLogsService.java | 2 +- .../security/CustomLogoutSuccessHandler.java | 16 ++++++++++++---- .../CustomUrlAuthenticationSuccessHandler.java | 3 ++- .../config/security/SecurityConfig.java | 2 +- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/logs/service/AdminLogsService.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/logs/service/AdminLogsService.java index 1814de3..5ac6529 100644 --- a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/logs/service/AdminLogsService.java +++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/logs/service/AdminLogsService.java @@ -86,7 +86,7 @@ public class AdminLogsService extends EgovAbstractServiceImpl { now = now.minusMinutes(now.getMinute()); now = now.minusSeconds(now.getSecond()); List todayLoginLog = loginLogRepository.findByUserIdAndAccessDtAfter(userId, now); - if(todayLoginLog.size()==0){ + if(todayLoginLog.size()==1){ userConnLog.setLogCnt(userConnLog.getLogCnt()+1); } userLogsRepository.save(userConnLog); diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/config/security/CustomLogoutSuccessHandler.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/config/security/CustomLogoutSuccessHandler.java index ccab17e..f90126d 100644 --- a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/config/security/CustomLogoutSuccessHandler.java +++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/config/security/CustomLogoutSuccessHandler.java @@ -1,7 +1,11 @@ package com.dbnt.kcscbackend.config.security; + +import com.dbnt.kcscbackend.admin.logs.service.AdminLogsService; import com.dbnt.kcscbackend.auth.entity.UserInfo; import com.dbnt.kcscbackend.config.jwt.EgovJwtTokenUtil; +import com.dbnt.kcscbackend.config.util.ClientUtils; +import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Configuration; import org.springframework.http.MediaType; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; @@ -9,11 +13,7 @@ import org.springframework.http.server.ServletServerHttpResponse; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.UserDetails; -import org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler; import org.springframework.security.web.authentication.logout.LogoutSuccessHandler; -import org.springframework.security.web.savedrequest.HttpSessionRequestCache; -import org.springframework.security.web.savedrequest.RequestCache; -import org.springframework.security.web.savedrequest.SavedRequest; import javax.servlet.ServletException; import javax.servlet.http.Cookie; @@ -23,7 +23,10 @@ import java.io.IOException; import java.util.HashMap; @Configuration +@RequiredArgsConstructor public class CustomLogoutSuccessHandler implements LogoutSuccessHandler { + private final EgovJwtTokenUtil jwtTokenUtil; + private final AdminLogsService adminLogsService; @Override public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException { @@ -37,6 +40,11 @@ public class CustomLogoutSuccessHandler implements LogoutSuccessHandler { HashMap resultMap = new HashMap(); resultMap.put("resultCode", "200"); + + //로그아웃 이력 생성 + String accessToken = request.getHeader("Authorization"); + adminLogsService.insertLoginLog(jwtTokenUtil.getUserIdFromToken(accessToken), ClientUtils.getRemoteIP(request), accessToken, "N", ClientUtils.getWebType(request)); + if (jsonConverter.canWrite(resultMap.getClass(), jsonMimeType)) { jsonConverter.write(resultMap, jsonMimeType, new ServletServerHttpResponse(response)); } diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/config/security/CustomUrlAuthenticationSuccessHandler.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/config/security/CustomUrlAuthenticationSuccessHandler.java index cab4612..d55c441 100644 --- a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/config/security/CustomUrlAuthenticationSuccessHandler.java +++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/config/security/CustomUrlAuthenticationSuccessHandler.java @@ -27,8 +27,9 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; -@RequiredArgsConstructor + @Configuration +@RequiredArgsConstructor public class CustomUrlAuthenticationSuccessHandler extends SimpleUrlAuthenticationSuccessHandler { private final EgovJwtTokenUtil jwtTokenUtil; diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/config/security/SecurityConfig.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/config/security/SecurityConfig.java index 5362900..db4eea9 100644 --- a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/config/security/SecurityConfig.java +++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/config/security/SecurityConfig.java @@ -133,7 +133,7 @@ public class SecurityConfig { http.addFilterBefore(jsonUsernamePasswordAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class); - http.logout().logoutRequestMatcher(new AntPathRequestMatcher("/auth/logout")).logoutSuccessHandler(new CustomLogoutSuccessHandler()); + http.logout().logoutRequestMatcher(new AntPathRequestMatcher("/auth/logout")).logoutSuccessHandler(new CustomLogoutSuccessHandler(egovJwtTokenUtil, adminLogsService)); return http.build(); }