Skip to content

Commit b4c4698

Browse files
committed
[feat] : 로그아웃 시 Redis에서 refreshToken 삭제 기능 추가 #17
1 parent d61c0ec commit b4c4698

File tree

2 files changed

+15
-9
lines changed

2 files changed

+15
-9
lines changed

src/main/java/org/dfbf/soundlink/domain/user/controller/AuthController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ public ResponseResult login(@RequestBody LoginReqDto loginReqDto, HttpServletRes
2929

3030
@PostMapping("/logout")
3131
@Operation(summary = "로그아웃", description = "로그아웃 API")
32-
public ResponseResult logout(HttpServletResponse response) {
33-
return userService.logout(response);
32+
public ResponseResult logout(HttpServletResponse response, HttpServletRequest request) {
33+
return userService.logout(response, request);
3434
}
3535

3636
@PostMapping("/token")

src/main/java/org/dfbf/soundlink/domain/user/service/UserService.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -208,10 +208,6 @@ public ResponseResult login(LoginReqDto loginReqDto, HttpServletResponse respons
208208
String accessToken = jwtProvider.createAccessToken(user.getUserId());
209209
String refreshToken = jwtProvider.createRefreshToken(user.getUserId());
210210

211-
// 로그로 출력
212-
System.out.println("Generated Access Token: " + accessToken);
213-
System.out.println("Generated Refresh Token: " + refreshToken);
214-
215211
//refreshToken - 쿠키
216212
ResponseCookie refreshCookie = getRefreshToken(refreshToken);
217213
response.setHeader("Set-Cookie", refreshCookie.toString());
@@ -228,7 +224,7 @@ public ResponseResult login(LoginReqDto loginReqDto, HttpServletResponse respons
228224
}
229225

230226
//로그아웃
231-
public ResponseResult logout(HttpServletResponse response) {
227+
public ResponseResult logout(HttpServletResponse response, HttpServletRequest request) {
232228
try {
233229
//클라이언트 - 토큰 삭제
234230
ResponseCookie refreshCookie = ResponseCookie
@@ -240,7 +236,12 @@ public ResponseResult logout(HttpServletResponse response) {
240236
.build();
241237
response.setHeader("Set-Cookie", refreshCookie.toString());//쿠키 삭제 요청
242238

243-
return new ResponseResult(ErrorCode.SUCCESS);
239+
String accessToken = jwtProvider.resolveAccessToken(request); // 요청에서 액세스 토큰 추출
240+
Long userId = jwtProvider.getUserId(accessToken); // 액세스 토큰을 넘겨서 userId 추출
241+
242+
tokenService.deleteRefreshToken(userId);
243+
244+
return new ResponseResult(ErrorCode.SUCCESS,"로그아웃 되었습니다.");
244245

245246
} catch (Exception e) {
246247
return new ResponseResult(ErrorCode. INTERNAL_SERVER_ERROR,"로그아웃 중 오류가 발생했습니다.");
@@ -261,9 +262,12 @@ public ResponseResult reissueToken(HttpServletRequest request, HttpServletRespon
261262
}
262263
}
263264
}
265+
System.out.println("AccessToken: " + accessToken);
266+
System.out.println("RefreshToken from Cookie: " + refreshToken);
267+
264268
// AccessToken과 RefreshToken이 모두 없는 경우
265269
if (accessToken == null || refreshToken == null) {
266-
logout(response);
270+
logout(response,request);
267271
return new ResponseResult(ErrorCode.TOKEN_INVALID, "토큰이 존재하지 않거나 만료되었습니다.");
268272
}
269273

@@ -283,6 +287,8 @@ public ResponseResult reissueToken(HttpServletRequest request, HttpServletRespon
283287
if (redisRefreshToken != null && redisRefreshToken.equals(refreshToken)) {
284288
String newAccessToken = jwtProvider.createAccessToken(userId);
285289

290+
System.out.println("New AccessToken: " + newAccessToken);
291+
286292
Map<String, String> responseBody = new HashMap<>();
287293
responseBody.put("accessToken", newAccessToken);
288294

0 commit comments

Comments
 (0)