티스토리 뷰
Axios interceptor와 Refresh Token
axios 공식문서에 따르면 interceptor는 api 요청에서 then이나 catch로 처리되기 전에 응답을 가로챌 수 있도록 하는 것이다.
프로덕트에서 로그인 시에만 가능한 행동들의 경우 header에 athorization : token 옵션을 함께 보내야한다.
이때 토큰이 만료되면 서버에서 토큰 만료로 인한 오류응답을 준다.(보통 401이나 403이 토큰 만료 오류이다)
토큰 탈취 문제를 피하고자 엑세스 토큰의 유효시간은 짧게 설정해두고 리프레시 토큰을 통해 엑세스 토큰을 재발급 받아야하는데 서비스를 이용하는 유저입장에서 반복적으로 401에러를 보는 것은 굉장히 불편한 일이다.
따라서 401에러가 나오면 유저가 보지 못하게 중간에서 가로채 리프레시 토큰으로 새 엑세스토큰을 발급받아 진행중이던 요청을 완료하는 방법을 알아볼 것 이다.
이때 axios interceptor를 이용하면 된다.
axios interceptor는 api 요청을 보낼 때 가로채는 axios.interceptors.request(클라이언트 -> 서버)와 api 응답을 받을 때 가로채는 axios.interceptor.response(서버 -> 클라이언트)가 있다.
우리는 401 응답이 올때의 로직을 추가해야하므로 아래 axios.interceptors.response.use()를 활용해야 한다.
// 요청 인터셉터 추가하기
axios.interceptors.request.use(function (config) {
// 요청이 전달되기 전에 작업 수행
return config;
}, function (error) {
// 요청 오류가 있는 작업 수행
return Promise.reject(error);
});
// 응답 인터셉터 추가하기
axios.interceptors.response.use(function (response) {
// 2xx 범위에 있는 상태 코드는 이 함수를 트리거 합니다.
// 응답 데이터가 있는 작업 수행
return response;
}, function (error) {
// 2xx 외의 범위에 있는 상태 코드는 이 함수를 트리거 합니다.
// 응답 오류가 있는 작업 수행
return Promise.reject(error);
});
참고
'Client > React.js' 카테고리의 다른 글
[React] Axios란? (+ Fetch API) (0) | 2023.09.06 |
---|---|
[React] Context API (0) | 2023.08.31 |
[React] Redux 이해하기 (0) | 2023.08.28 |
[React] useCallback (0) | 2023.08.25 |
[React] 1. React-app 설치방법 (0) | 2023.08.21 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 유사배열객체
- 제어 컴포넌트
- rest parameter
- react
- 코드잇스프린트
- currentTarget
- GitHub
- 스프린트프론트엔드6기
- tanstackquery
- 객체
- 코드잇 스프린트
- CSS
- 비동기
- map
- Next.js
- 중급 프로젝트
- 동기
- Git
- 리액트
- 프론트엔드
- hydrationboundary
- 비제어 컴포넌트
- 배열
- innerhtml
- 취업까지달린다
- js
- Target
- html
- javascript
- arguments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함