• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

AuthController 질문있습니다

21.12.28 23:49 작성 조회수 313

2

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

답변 2

·

답변을 작성해보세요.

1

SangYun Lee님의 프로필

SangYun Lee

2022.02.19

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

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

filterChain.doFilter(servletRequest, servletResponse);

를 안하신듯 합니다.

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

0

성훈박님의 프로필

성훈박

2022.01.12

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

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

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

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

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