복붙노트

[REACTJS] Axios의 인터셉터 응답 토큰 새로 고침 API 호출하지만 토큰 refreshToken의 API 및 LATOR 모든 API에 관계없이 만료하기

REACTJS

Axios의 인터셉터 응답 토큰 새로 고침 API 호출하지만 토큰 refreshToken의 API 및 LATOR 모든 API에 관계없이 만료하기

해결법


  1. 1.일반적 흐름은 같은되어야합니다 :

    일반적 흐름은 같은되어야합니다 :

    코드 그래서해야이 같은 모습 (이것은 내 응용 프로그램에서 작동하는 예입니다)

    function isUnAuthorizedError(error) {
      return error.config && error.response && error.response.status === 401;
    }
    
    function shouldRetry(config) {
      return config.retries.count < 3;
    }
    
    function updateAuthToken(response) {
      localStorage.setItem('token', response.data.accessToken);
    }
    
    async function authInterceptor(error) {
      error.config.retries = error.config.retries || {
        count: 0,
      };
    
      if (isUnAuthorizedError(error) && shouldRetry(error.config)) {
        const response = await axios.post(`/token/refresh`, {});
    
        updateAuthToken(response);
    
        error.config.retries.count += 1;
        axios.defaults.headers.common.Authorization = `Bearer ${response.data.accessToken}`; // update the accessToken
        return axios.rawRequest(error.config); // retries the original request
      }
      return Promise.reject(error);
    }
    
    axios.interceptors.response.use(null, authInterceptor); // This indicates that authInterceptor will work only on request errors (status code >= 400)
    

    이 흐름이 더 의미가 있습니다 기대하고있다.

  2. from https://stackoverflow.com/questions/58909095/axios-interceptor-response-token-refresh-api-called-but-getting-token-is-expired by cc-by-sa and MIT license