Jwt 사용 중인데
토큰 만료되면 일단 예외를 던지기보다는 HttpServletRequeset 객체에
제가 토큰이 만료되었다고 알려주고 Authetnication이 null 인걸 jwt 처리 필터에서 catch해서
AuthenticationException 받아가지고 ExceptionTranslationFilter로 보내서
AuthenticationEntryPoint에서 request 꺼내서
request.sendRedirect("컨트롤러")로 보내는 상황인데
jwt 처리 필터가 OncePerRequestFilter 상속 받았는데 로그는 2번 찍힙니다..
디버깅해서 2번 도는건 확인했는데 혹시 왜 그런지 알 수 있을까요?? sendRedirect가 다시 ExceptionTranslationFilter를 타던데
이게 sendRedirect라 요청이 2번으로 처리되서 2번 타는지 모르겠습니다..
무슨소리지.. 예외를 왜 catch함? catch했는데 AuthenticationEntryPoint는 어떻게 동작함?
Authentication 객체가 토큰인증을 처리못하면,
반환받는 곧에서 SecurityContextHolder.clearContext(); 해서 authenticationException 발생시키게 하였습니다
그걸 왜 클리어해요? 알아서 안될텐데
이게 EntryPoint를 사용하면 AuthenticationException을 받는데 얘가 JwtTokenException을 처리 못하는 거 같아 ExceptionTranslationFilter가 필터 거의 끝에 있다길래 ruquest에 JwtException 내용을 적어주고 EntryPoint에서 request에서 JwtExcepiton 꺼내주는 형식으로 하고 있습니다...
JwtExcepiton 이 발생했으면 인증 처리를 안하면 돼요 그럼 인증 객체 세팅 될일도 없고 자동으로 예외 발생해서 EntryPoint로 튕깁니다
제가 clear을 안하면 AuthentcationException보다 먼저 Claims가 nullPointException을 반환해서 Authenticaiton 객체에 안담겨서 그냥 인증 못했구나 생각하면서 catch해서 클리어했습니다 하드코딩 되어 있긴합니다,,
엔트리 포인트에서 자동으로 튕기면 jwt 토큰이 만료되었는지 어떻게 알 수 있는 방법이 없을까요?
entrypoint가 Authentication Exception만 받아서,,
AuthenticationException에 jwtException 내용을 기술해주면 될까요?
jwt 토큰이 만료됐는지는 왜 알아야해요?
걍 오카방 오셈 답답