개발지식 먹는 하마 님의 블로그

[내일배움캠프 44일차] Spring-advanced_Lv5의 해결과정 기록 문서 본문

내일배움캠프 (CS25)

[내일배움캠프 44일차] Spring-advanced_Lv5의 해결과정 기록 문서

devhippo 2025. 4. 21. 10:57

User의 정보를 담은 Token을 쿠키에 담아 사용하기

회원가입 또는 로그인 성공 시, 유저의 Id, email, userRole(권한)을 담은 토큰이 문자열로 반환되도록 설계되어있었다.

@Getter
 public class SigninResponse {
 
     private final String bearerToken;
 
     public SigninResponse(String bearerToken) {
         this.bearerToken = bearerToken;
     }
 }

Barere Token을 문자열 형식으로 반환하고 있었기 때문에
Postman에서 직접 Authorization을 입력해줘야 하는 불편함이 있었다.


이를 쿠키에 Token을 담아 사용하는 방식으로 변경하였다.

public class CookieUtil {
     public static Cookie createTokenCookie(String tokenValue, int maxAgeInSeconds) {
         Cookie cookie = new Cookie("token", tokenValue);
         cookie.setHttpOnly(true);
         cookie.setSecure(true);
         cookie.setPath("/");
         cookie.setMaxAge(maxAgeInSeconds); // 예: 3 * 60
         return cookie;
     }
 }

쿠키에 토큰을 담는 CookieUtil 클래스를 생성하고 회원가입 또는 로그인 성공 시, 쿠키를 응답에 추가하였다.

public ResponseEntity<Void> signin(@Valid @RequestBody SigninRequest signinRequest, HttpServletResponse response) {
 
         String bearerToken = authService.signin(signinRequest);
 
         //문자열로 반환하던 Bearer Token을 쿠키에 저장
         Cookie cookie = CookieUtil.createTokenCookie(bearerToken, 180);
         response.addCookie(cookie);
 
         return ResponseEntity.ok().build();
     }

 

 

시간이 부족해 많은 부분을 변경하지는 못하였다.

jwtFilter관련 테스트 코드를 작성하였으나 오류를 해결하지 못하여 이 또한 기입하지 못하였다.
추후, 오류가 해결되면 새롭게 업데이트 할 계획이다.