TIL

(2024-06-07) 토큰 저장 방식 헤더로 변경,refresh token엔티티에 저장

o_coding 2024. 6. 10. 15:08
public void addJwtToHeader(HttpServletResponse response, String token, String headerName) {
response.setHeader(headerName, token);
}

기존에 요구사항을 잘 파악하지 못하고 쿠키에 토큰을 저장했는대 토큰 을 헤더에 저장 되도록 했다.

 

@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
if("/api/user/logout".equals(request.getRequestURI()) &&"POST".equalsIgnoreCase(request.getMethod())){
// 모든 헤더를 로그에 출력
Enumeration<String> headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String headerName = headerNames.nextElement();
String headerValue = request.getHeader(headerName);
log.info("Header Name: {}, Header Value: {}", headerName, headerValue);
}
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
if(auth!= null){
new SecurityContextLogoutHandler().logout(request,response,auth);
}
//헤더에서 토큰 삭제
response.setHeader(jwtUtil.AUTHORIZATION_HEADER,"");

//user 엔티티에서 refresh토큰 삭제
String userId = request.getHeader("userId");
log.info(userId);
userService.updateRefreshToken(userId,null);
response.setCharacterEncoding("UTF-8");
response.setStatus(HttpServletResponse.SC_OK);
response.getWriter().write("로그아웃 성공");
log.info("로그아웃 성공");
return;
}
filterChain.doFilter(request,response);
}

 

로그아웃시 토큰을 헤더에서 제거하고 user 엔티티에서 리프레시토큰을 삭제하는 식으로 변경했다.

팀원 들과 소통하면서 현제 코드의 문제를 파악하면서 진행 할 수 있어서 좋았다