로그인, 로그아웃 로그 생성.

thkim
강석 최 2024-02-27 14:15:03 +09:00
parent 3963007183
commit 42196383be
4 changed files with 16 additions and 7 deletions

View File

@ -86,7 +86,7 @@ public class AdminLogsService extends EgovAbstractServiceImpl {
now = now.minusMinutes(now.getMinute());
now = now.minusSeconds(now.getSecond());
List<ThLoginLog> todayLoginLog = loginLogRepository.findByUserIdAndAccessDtAfter(userId, now);
if(todayLoginLog.size()==0){
if(todayLoginLog.size()==1){
userConnLog.setLogCnt(userConnLog.getLogCnt()+1);
}
userLogsRepository.save(userConnLog);

View File

@ -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<String, Object> resultMap = new HashMap<String, Object>();
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));
}

View File

@ -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;

View File

@ -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();
}