강의

멘토링

커뮤니티

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

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

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

Học React 19 qua mã nguồn cùng API Server Spring Boot

Refresh Token과 자동갱신

질문이있습니다

Viết

·

202

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만 필터 제외시킨거같은데...

 

 

reactspring-bootjpajwtredux-toolkit

Câu trả lời 3

1

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

Todo나 Product 관련된 호출은 JWT가 필요한 호출입니다.

axios.get( )이 아니라 유틸로 만들어둔 jwtAxios를 이용하셔서 호출하셔야 합니다.

0

sksksk96님의 프로필 이미지
sksksk96
Người đặt câu hỏi

아 메인페이지나 어바웃페이지는 axios 통신을ㄹ 안하는군요.,....하 죄송합니다 ㅠㅠㅋㅋㅋㅋㅋㅋㅋㅋ

0

안녕하세요, 김우철님. 인프런 AI 인턴입니다.

말씀해 주신 상황을 보니, JWT 필터링 과정에서 request.getHeader()null을 반환하여 오류가 발생하고 있는 것 같습니다. 이에 대한 몇 가지 점을 살펴보겠습니다.

문제의 원인

  1. 헤더가 없는 요청: authHeaderStr.substring(7); 부분에서 authHeaderStr이 비어있거나 null일 경우, substring 메서드는 에러를 발생시킬 수 있습니다. 이는 사용자가 인증이 필요한 페이지로 접속할 때 JWT 토큰이 헤더에 포함되지 않아서 발생할 수 있습니다.

  2. MainPage와 AboutPage와의 차이: mainpageabout 페이지는 인증이 필요 없는 경로로 설정되었거나, API 요청이 없을 수 있습니다. 반면 todoproduct는 API 요청을 통해 데이터를 가져오며, 이 과정에서 인증이 필요할 가능성이 있습니다. 따라서 JWT가 필요 없거나 제외된 페이지에서는 오류가 발생하지 않을 수 있습니다.

해결 방법

  1. JWT 필터 예외 처리: getHeader()의 결과가 null인 경우를 대비한 예외 처리를 추가하여, 조건문으로 토큰이 없을 경우를 처리해 주세요.

    String authHeaderStr = request.getHeader("Authorization");
    if (authHeaderStr == null || !authHeaderStr.startsWith("Bearer ")) {
        return;
    }
    
  2. 필터 적용 경로 확인: shouldNotFilter 메서드에서 필터가 적용되지 않을 대상을 명확히 확인하여 필요한 경로에 대해서만 필터가 작동하도록 조정 주세요.

관련하여 도움이 될 수 있는 기존 답변을 추천해 드릴게요:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해 드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

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

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

Đặt câu hỏi