public void addJwtToHeader(HttpServletResponse response, String token, String headerName) {
response.setHeader(headerName, token);
}
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);
}
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 엔티티에서 리프레시토큰을 삭제하는 식으로 변경했다.
팀원 들과 소통하면서 현제 코드의 문제를 파악하면서 진행 할 수 있어서 좋았다
'TIL' 카테고리의 다른 글
(2024-06-11) 지연로딩,영속성 전이 (0) | 2024.06.12 |
---|---|
(2024-06-10) 팀과제 마무리 (0) | 2024.06.11 |
(2024-06-05)팀과제 회원가입 및 인증 구현 (0) | 2024.06.07 |
(2024-06-04) 팀과제 시작 (0) | 2024.06.05 |
(2024-06-03) Entity 연관관계 (0) | 2024.06.04 |