인프런 커뮤니티 질문&답변

이승호님의 프로필 이미지
이승호

작성한 질문수

Spring Boot JWT Tutorial

DTO, Repository, 로그인

AuthController 질문있습니다

해결된 질문

작성

·

395

2

안녕하세요, 우선 좋은 강의 감사합니다. ^___^
 
다름이 아니라 강의를 실습하는 중 문제가 생겨 한 가지 여쭙고 싶습니다!
/api/authenticate 경로로 요청을 보내면 JwtFilter의 doFilter 로직을 타더라구요. 그래서 요청 헤더에 아무런 값이 없기 때문에 "유효한 JWT 토큰이 없습니다" 문장이 로그에 찍힙니다.
 
SecurityConfig에 /api/authenticate 경로는 .permitAll() 을 해줬기 때문에 해당 doFilter 로직을 타면 안될 것 같은데, 혹시 제 생각이 맞는지 여쭤보고 싶습니다.
 
혹시 추가로... 강사님 깃허브 코드랑 비교해봐도 크게 다른점이 잘 안보이고.. 포스트맨으로 POST 요청까지 크게 다른 점을 모르겠는데.. 혹시 "유효한 JWT 토큰이 없습니다" 라고 뜨는 경우에 코드상에 살펴볼만한 포인트가 있을까요..?
 
감사합니다.

답변 3

1

필터는 동작하는게 맞습니다.

JwtFilter class 의 dofilter 메서드의 가장 마지막 라인에

filterChain.doFilter(servletRequest, servletResponse);

를 안하신듯 합니다.

resolveToken 메서드에서 null을 반환하고 doFilter에서도 jwt 변수에는 null이 들어있기때문에 로그 메시지는 그렇게 나오는게 맞는듯 합니다.

0

정은구님의 프로필 이미지
정은구
지식공유자

안녕하세요 🙂

Spring Boot 3.4.0 (SNAPSHOT) 버전에 맞춰 샘플 코드를 업데이트했습니다.

아래 링크에서 Java와 Kotlin 버전의 최신 샘플 코드를 확인하실 수 있으니 참고 부탁드립니다.

Javahttps://github.com/SilverNine/spring-boot-jwt-tutorial

Kotlinhttps://github.com/SilverNine/spring-boot-jwt-tutorial-kotlin

0

서버로 요청을 보내면 서블릿으로 전달되기 전에 필터를 거치게 됩니다.

permitAll() 로 해당 경로를 접근할수있는 문을 열어두었고, 해당 경로로 요청을 보내면 Security FilterChain 에 의해 JwtFilter 가 발생됩니다 그래서 유효한 JWT 토큰이 없다고 로그가 발생하는 이유로 봅니다. 

저의 미숙한 지식으로 해결책을 제시하면

로그인할 때 해당 필터링(로그가 안찍히도록)이 적용하지 않게 하고싶다면 JwtFilter 코드내부에 

requestURI 변수에 담긴 값을 조건문을 통해 걸러내는 작업을 하면 될것같습니다.

이승호님의 프로필 이미지
이승호

작성한 질문수

질문하기