Skip to content

Commit 8643071

Browse files
committed
2 parents 3b10cc8 + 673b55e commit 8643071

File tree

3 files changed

+21
-5
lines changed

3 files changed

+21
-5
lines changed

src/main/java/com/back/domain/user/dto/RefreshTokenResDto.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,5 @@ public static class UserInfoDto {
1616
private final String nickname;
1717
private final Boolean isFirstLogin;
1818
private final Double abvDegree;
19-
2019
}
2120
}

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

src/main/resources/application.yml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,11 +102,10 @@ custom:
102102
jwt:
103103
secretKey: ${JWT_SECRET_KEY}
104104
accessToken:
105-
expirationSeconds: "#{60}" # 15분 곱하기
105+
expirationSeconds: "#{60*15}"
106106
refreshToken:
107107
expirationSeconds: "#{60*60*24*30}"
108-
idleTimeoutHours: "#{1}"
109-
# "#{60*6*4}"
108+
idleTimeoutHours: "#{60*6*4}"
110109

111110

112111
management:

0 commit comments

Comments
 (0)