강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của pang
pang

câu hỏi đã được viết

Hướng dẫn JWT khởi động mùa xuân

DTO, Kho lưu trữ, Đăng nhập

AuthController 질문있습니다

Đã giải quyết

Viết

·

503

2

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

Câu trả lời 3

1

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

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

filterChain.doFilter(servletRequest, servletResponse);

를 안하신듯 합니다.

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

0

silvernine님의 프로필 이미지
silvernine
Người chia sẻ kiến thức

안녕하세요 🙂

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 변수에 담긴 값을 조건문을 통해 걸러내는 작업을 하면 될것같습니다.

Hình ảnh hồ sơ của pang
pang

câu hỏi đã được viết

Đặt câu hỏi