작성
·
241
·
수정됨
0
안녕하세요. 리프레쉬 토큰을 사용하여 useAuth에 적용을 했는데요. 로그인을 하여 리프레쉬 토큰이 발급 되어도 조건에 만족하지 못하고 있습니다.
확인해보니 restoreAccessToken을 가져오지 못하여 발생하는 이벤트 였습니다.
하지만 새로고침을 하면
리프레시 토큰을 찾아서 인증이 됩니다.
무슨 이유 때문인지 잘 모르겠습니다.
리프레시 토큰 코드도 첨부하도록 하겠습니다.
추가적으로 로그인 인증시
getAccessToken을 직접 불러오면 문제가 없지만
리코일로더블로 이용하면 이런 문제가 생깁니다.!!
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
김태연님, 로그인과 리프레시 토큰 관련해서 useAuth
적용 과정에서 겪고 계신 문제로 보입니다. 리프레시 토큰을 받지 못하는 사례는 여러 원인에 의해 발생할 수 있으며, 자세히 확인해 보아야 합니다. 관련하여 답변드리겠습니다.
첨부하신 내용을 바탕으로, useAuth
커스텀 훅에서 리프레시 토큰을 처리하는 로직과 이를 통해 액세스 토큰을 복원시키는 과정에서 문제가 발생하는 상황 같습니다. 이와 유사한 상황을 겪은 다른 학생들의 사례를 참고하여 답변을 드리겠습니다.
jwt must be provided 오류 - 이 질문에 답변된 내용은 JWT 관련 에러와 토큰 복원 과정에서 발생할 수 있는 문제를 다룹니다. 리프레시 토큰이 적절하게 제공되지 않았을 때 발생하는 에러와 이를 해결하기 위한 방안이 제시되어 있어 도움이 될 수 있습니다.
질문하신 내용과 직접적으로 일치하는 구체적인 해결 방법을 제공하기는 어렵지만, 리프레시 토큰과 관련한 문제를 해결하는 과정에서 일반적으로 검토해야 할 몇 가지 포인트는 다음과 같습니다:
- API 서버에 올바른 리프레시 토큰이 전송되고 있는지 확인합니다.
- 리프레시 토큰을 사용해 새로운 액세스 토큰을 발급받는 부분의 로직에 오류가 없는지 검토합니다.
- 리프레시 토큰과 액세스 토큰을 관리하는 상태 관리 로직이 올바르게 구성되어 있는지 확인합니다.
- 네트워크 요청과 응답을 개발자 도구의 네트워크 탭을 통해 확인하여 에러 메시지나 실패한 요청이 있는지 점검합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
지식 공유자님의 답변이 필요합니다.
추가적으로 알아낸 것은 getAccessToken() 함수를 그대로 불러올 경우는 정상적으로 작동합니다. 즉, 로그인 시 바로 리프레시 토큰에서 엑세스 토큰을 받아와 로그인 인증이 됩니다.
하지만 recoilLoadable 을 사용할 경우 콘솔로 찍어보면 두가지 값이 나오는데 state와 contents가 나옵니다.
state는 hasValue 값을 가져오고, contents는 undefined를 가져옵니다.
이 결과값의 뜻은 올바르게 값을 가져왔지만 내용이 contents가 undefined라는 소리라고 합니다
이에 대한 오류를 알아보았더니 비동기 요청에서 문제가 생길 가능성이 있다고 하네요. 그렇지만 해결하지 못하였습니다. getAccessToken을 직접 불러와 사용하면 되지만 recoilLoadable 이 왜 안되는지 궁금하여 여쭤봅니다.