Spring

로그인 시도 시에도 JWT 필터를 거치는 문제

qwertyv 2024. 9. 6. 11:30

문제 상황

로그인을 성공해야 jwt를 발급받는다.

즉, 로그인을 하기 전에는 jwt를 가지고 있지 않는게 당연하다.

 

그런데 로그인 요청 시에 jwt가 없다는 예외가 터졌다. 

jwt를 받기 위해 로그인을 하는건데 당연히 없지.. 왜그래??

 

원인

요청 URL이 로그인 경로라면 JWT 필터를 거치지 않아야 하는데,

현재는 이를 고려하지 않고 JWT 필터링을 수행하고 있다.

 

해결

SecurityConfig에서 필터 순서를 수정해주었다.

 

<기존>

http
  .addFilterAt(customLoginFilter, UsernamePasswordAuthenticationFilter.class)
  .addFilterBefore(new JwtFilter(jwtUtil), UsernamePasswordAuthenticationFilter.class);

 

로그인 필터 이전에 jwt 필터를 넣었다.

 

 

<수정>

http
  .addFilterAt(customLoginFilter, UsernamePasswordAuthenticationFilter.class)
  .addFilterAfter(new JwtFilter(jwtUtil), UsernamePasswordAuthenticationFilter.class);

 

로그인 필터 이후에 실행되게 고쳤고 문제가 해결되었다.

 

로그인 요청 시에는 jwt 필터를 거치지 않고, 인증이 필요한 요청만 jwt 필터를 거친다.

'Spring' 카테고리의 다른 글

스프링 DI와 의존 자동 주입  (0) 2024.11.10
@PostConstruct  (1) 2024.09.13
중복되는 createdAt, updatedAt 필드 관리하기  (0) 2024.04.22
JPA가 나오게 된 배경  (0) 2024.01.07
Spring을 이해하는 근본적인 이야기  (0) 2024.01.07