From 00405120a5ff8d0c3e561a52d8788ded4a0134e6 Mon Sep 17 00:00:00 2001 From: saevit Date: Thu, 19 Jun 2025 20:43:55 +0900 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=EA=B3=BC?= =?UTF-8?q?=20=ED=9A=8C=EC=9B=90=EA=B0=80=EC=9E=85=EC=8B=9C=20HttpRequestU?= =?UTF-8?q?til=EC=97=90=EC=84=9C=20=ED=86=A0=ED=81=B0=EC=9D=84=20=ED=86=B5?= =?UTF-8?q?=ED=95=9C=20userId=20=EA=B0=80=EC=A0=B8=EC=98=A4=EC=A7=80=20?= =?UTF-8?q?=EC=95=8A=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/onederful/domain/log/HttpRequestUtil.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/example/onederful/domain/log/HttpRequestUtil.java b/src/main/java/com/example/onederful/domain/log/HttpRequestUtil.java index 1c955a2..8d6ce5c 100644 --- a/src/main/java/com/example/onederful/domain/log/HttpRequestUtil.java +++ b/src/main/java/com/example/onederful/domain/log/HttpRequestUtil.java @@ -42,7 +42,11 @@ public RequestInfo getRequestInfo() { String url = request.getRequestURI(); // 토큰으로부터 요청한 사용자의 userId - Long userId = jwtUtil.extractId(request); + Long userId = null; + // 로그인, 회원가입 등 토큰 체크 안 할 URL 처리 + if (!url.startsWith("/api/auth/login") && !url.startsWith("/api/auth/register")) { + userId = jwtUtil.extractId(request); + } return new RequestInfo(ip, enumMethod, url, userId); } From 9360093828ed213484fdb8880b366e835e1d4c73 Mon Sep 17 00:00:00 2001 From: saevit Date: Thu, 19 Jun 2025 20:57:43 +0900 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=EC=98=A4=EB=A5=98=EB=A1=9C=20?= =?UTF-8?q?=EC=A3=BC=EC=84=9D=20=EC=B2=98=EB=A6=AC=20=ED=96=88=EB=8D=98=20?= =?UTF-8?q?=EB=B6=80=EB=B6=84=20=ED=95=B4=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../onederful/domain/log/LoggingAspect.java | 18 ++--- .../domain/log/service/LogService.java | 65 ++++++++++--------- 2 files changed, 42 insertions(+), 41 deletions(-) diff --git a/src/main/java/com/example/onederful/domain/log/LoggingAspect.java b/src/main/java/com/example/onederful/domain/log/LoggingAspect.java index 174cc3e..ff92320 100644 --- a/src/main/java/com/example/onederful/domain/log/LoggingAspect.java +++ b/src/main/java/com/example/onederful/domain/log/LoggingAspect.java @@ -43,15 +43,15 @@ public void updateTaskStatusMethod() { } // 로그인 시 자동 로그 기록 -// @AfterReturning(pointcut = "loginMethod()", returning = "result") -// public void logLoginMethod(Object result) { -// -// // HttpServletRequest으로부터 요청 ip, 메서드, url -// HttpRequestUtil.RequestInfo request = httpRequestUtil.getRequestInfo(); -// -// // 로그 저장 -// logService.saveLoginLog(request.getIp(), request.getMethod(), request.getUrl(), result); -// } + @AfterReturning(pointcut = "loginMethod()", returning = "result") + public void logLoginMethod(Object result) { + + // HttpServletRequest으로부터 요청 ip, 메서드, url + HttpRequestUtil.RequestInfo request = httpRequestUtil.getRequestInfo(); + + // 로그 저장 + logService.saveLoginLog(request.getIp(), request.getMethod(), request.getUrl(), result); + } // 생성, 수정, 삭제 시 자동 로그 기록 @AfterReturning(pointcut = "cudMethods()", returning = "result") diff --git a/src/main/java/com/example/onederful/domain/log/service/LogService.java b/src/main/java/com/example/onederful/domain/log/service/LogService.java index 669f869..bf23d26 100644 --- a/src/main/java/com/example/onederful/domain/log/service/LogService.java +++ b/src/main/java/com/example/onederful/domain/log/service/LogService.java @@ -9,6 +9,7 @@ import com.example.onederful.domain.log.repository.LogRepository; import com.example.onederful.domain.log.repository.LogSpecification; import com.example.onederful.domain.task.dto.response.TaskResponse; +import com.example.onederful.domain.user.dto.Tokeninfo; import com.example.onederful.domain.user.entity.User; import com.example.onederful.domain.user.repository.UserRepository; import com.example.onederful.exception.CustomException; @@ -65,38 +66,38 @@ public LogsResponse findLog( } // 로그인 시 로그 기록 -// @Transactional -// public void saveLoginLog(String ip, Method method, String url, Object result) { -// // userId -// Long userId = null; -// if (result instanceof Tokeninfo) { -// String token = ((Tokeninfo) result).getToken(); -// userId = jwtUtil.extractAllClaims(token).get("id", Long.class); -// } -// -// // 현재 유저 조회 -// User user = userRepositry.findById(userId).orElseThrow( -// () -> new CustomException(ErrorCode.UNAUTHORIZED) -// ); -// -// // 활동 유형 -// Activity activity = Activity.USER_LOGGED_IN; -// -// // 대상 id -// Long targetId = userId; -// -// // 로그 DB에 저장 -// Log log = Log.builder() -// .user(user) -// .activity(activity) -// .ipAddress(ip) -// .method(method) -// .targetId(targetId) -// .requestUrl(url) -// .build(); -// -// logRepository.save(log); -// } + @Transactional + public void saveLoginLog(String ip, Method method, String url, Object result) { + // userId + Long userId = null; + if (result instanceof Tokeninfo) { + String token = ((Tokeninfo) result).getToken(); + userId = jwtUtil.extractAllClaims(token).get("id", Long.class); + } + + // 현재 유저 조회 + User user = userRepositry.findById(userId).orElseThrow( + () -> new CustomException(ErrorCode.UNAUTHORIZED) + ); + + // 활동 유형 + Activity activity = Activity.USER_LOGGED_IN; + + // 대상 id + Long targetId = userId; + + // 로그 DB에 저장 + Log log = Log.builder() + .user(user) + .activity(activity) + .ipAddress(ip) + .method(method) + .targetId(targetId) + .requestUrl(url) + .build(); + + logRepository.save(log); + } // 생성, 수정, 삭제 시 로그 기록 @Transactional