본문 바로가기

Vue/Vue

로그아웃 2 (Springboot + Vue)

코드 동작


로그아웃시 해당 토큰을 블랙리스트에 추가하는 방법으로 로그아웃 토큰을 처리

 

  1.  로그아웃 
  2.  CustomLogoutSuccessHandler 의 requestHeader에서 토큰을 구한다 (로그인시 구하는 방법과 동일)  
  3.  토큰에서 만료일을 구한 후 (토큰 id , 토큰 , 토큰 만료일) DB에 저장한다.
  4.  DB에서는 이벤트 스케줄러를 통해 설정한 시간마다 블랙리스트 토큰의 만료일과 현재 시간을 비교한다.
  5.  블랙리스트 토큰의 만료일 < 현재시간 일 때, 해당 토큰을 삭제한다.
  6.  인증 필터에서는 해당 토큰이 블랙리스트에 등록되어 있는지 확인한다.

 

 

 

 

추가한 파일 & 코드


  • CustomLogoutSuccessHandler - 로그아웃 성공 시 핸들러 실행
  • Token - 토큰 엔티티 정의
  • Token.Repository - 해당 토큰을 DB에 저장하는 쿼리 등록

 

 

 

 

추가예정


 CustomLogoutSuccessHandler

@Slf4j
public class CustomLogoutSuccessHandler extends SimpleUrlLogoutSuccessHandler{

    @Override public void onLogoutSuccess(HttpServletRequest request,
                                          HttpServletResponse response,
                                          Authentication authentication) throws IOException, ServletException {
        log.debug("CustomLogoutSuccessHandler.onLogoutSuccess ::::");

        String requestTokenHeader = request.getHeader("Authorization");
        if (requestTokenHeader != null && requestTokenHeader.startsWith("Bearer ")) {
            String jwtToken = requestTokenHeader.substring(7);
            
            JwtTokenUtil jwtTokenUtil = new JwtTokenUtil();
            Date jwtTokenExp =jwtTokenUtil.getExpirationDateFromToken(jwtToken);
            log.debug("Exp Time :: " + jwtTokenExp);
        }
        super.onLogoutSuccess(request, response, authentication);
    }
}

 

 

 

 

 

로그아웃 3 (Springboot + Vue)

추가된 코드 token tokenRepository tokenService CustomLogoutSuccessHandler 코드 동작 로그아웃 후에도 기간이 남은 토큰은 재사용될 가능성이 있다. (토큰은 따로 처리하지 않기때문) 따라서 로그아웃시 로그..

dwc04112.tistory.com

 

'Vue > Vue' 카테고리의 다른 글

Vue.js 3.0 시작하기  (0) 2023.04.05
로그아웃 3 (Springboot + Vue)  (0) 2022.01.25
로그아웃 1 (Springboot + Vue)  (0) 2022.01.20
조회수 중복 방지-cookie (Springboot + Vue)  (0) 2022.01.18
글 수정 & 삭제 2 (Springboot + Vue)  (0) 2022.01.15