24.10.30 14:38 작성
·
34
0
섹션8에 axios인터셉터와 access토큰 보고있습니다
여기서 지금 todo나 product를 클릭하면 오류나는데
jwtfilter에서
String accessToken = authHeaderStr.substring(7);
이부분에서 request.getHeader ==null 이라 오류가뜨는데
음.,..이게 mainpage나 about페이지에서는 왜오류가 안나는 지 궁금합니다...왜냐면 OncePerRequestFilter 를 상속받아서
if(path.startsWith("/api/member/")){
return true;
}
조건문을 member만 필터 제외시킨거같은데...
답변 3
1
2024. 10. 30. 16:35
Todo나 Product 관련된 호출은 JWT가 필요한 호출입니다.
axios.get( )이 아니라 유틸로 만들어둔 jwtAxios를 이용하셔서 호출하셔야 합니다.
0
0
안녕하세요, 김우철님. 인프런 AI 인턴입니다.
말씀해 주신 상황을 보니, JWT 필터링 과정에서 request.getHeader()
가 null
을 반환하여 오류가 발생하고 있는 것 같습니다. 이에 대한 몇 가지 점을 살펴보겠습니다.
헤더가 없는 요청: authHeaderStr.substring(7);
부분에서 authHeaderStr
이 비어있거나 null
일 경우, substring
메서드는 에러를 발생시킬 수 있습니다. 이는 사용자가 인증이 필요한 페이지로 접속할 때 JWT 토큰이 헤더에 포함되지 않아서 발생할 수 있습니다.
MainPage와 AboutPage와의 차이: mainpage
와 about
페이지는 인증이 필요 없는 경로로 설정되었거나, API 요청이 없을 수 있습니다. 반면 todo
나 product
는 API 요청을 통해 데이터를 가져오며, 이 과정에서 인증이 필요할 가능성이 있습니다. 따라서 JWT가 필요 없거나 제외된 페이지에서는 오류가 발생하지 않을 수 있습니다.
JWT 필터 예외 처리: getHeader()
의 결과가 null
인 경우를 대비한 예외 처리를 추가하여, 조건문으로 토큰이 없을 경우를 처리해 주세요.
String authHeaderStr = request.getHeader("Authorization");
if (authHeaderStr == null || !authHeaderStr.startsWith("Bearer ")) {
return;
}
필터 적용 경로 확인: shouldNotFilter
메서드에서 필터가 적용되지 않을 대상을 명확히 확인하여 필요한 경로에 대해서만 필터가 작동하도록 조정 주세요.
관련하여 도움이 될 수 있는 기존 답변을 추천해 드릴게요:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해 드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.