Skip to content

Commit 4c7a04e

Browse files
committed
refactor : 로그아웃 시 추가정보 삭제
1 parent d68f43e commit 4c7a04e

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

src/main/java/com/back/domain/user/service/UserAuthService.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import java.util.Optional;
2323
import java.util.Set;
2424

25+
import static org.springframework.security.core.context.SecurityContextHolder.*;
26+
2527
@Slf4j
2628
@Service
2729
@RequiredArgsConstructor
@@ -199,14 +201,30 @@ public RefreshTokenResDto refreshTokens(HttpServletRequest request, HttpServletR
199201

200202
//토큰 끊기면서 OAuth 자동 로그아웃
201203
public void logout(HttpServletRequest request, HttpServletResponse response) {
204+
// 1. RefreshToken DB에서 삭제
202205
String refreshToken = jwtUtil.getRefreshTokenFromCookie(request);
203-
204206
if (refreshToken != null) {
205207
refreshTokenService.revokeToken(refreshToken);
206208
}
207209

210+
// 2. JWT 쿠키 삭제
208211
jwtUtil.removeAccessTokenCookie(response);
209212
jwtUtil.removeRefreshTokenCookie(response);
213+
214+
// 3. Spring Security 세션 무효화 (Redis 포함)
215+
try {
216+
if (request.getSession(false) != null) {
217+
request.getSession().invalidate();
218+
log.debug("세션 무효화");
219+
}
220+
} catch (IllegalStateException e) {
221+
log.debug("세션이 이미 무효화되어 있음");
222+
}
223+
224+
// 4. SecurityContext 클리어
225+
clearContext();
226+
227+
log.info("로그아웃 완료 - JWT, 세션, SecurityContext 모두 정리됨");
210228
}
211229

212230
@Transactional

0 commit comments

Comments
 (0)