刷新令牌JWT后使用Redux函数

时间:2020-01-23 12:44:36

标签: reactjs redux jwt axios

我有功能

export function configureInterceptors(store) {
  axios.interceptors.response.use(
    response => response,
    error => {
      if (error.response && error.response.data) {
        if (error.response.status === 401 && err.config) {
          const originalRequest = error.config;
          originalRequest._retry = true;

          store.dispatch(jwtRefresh(originalRequest))          
        }
        throw error;
      }
    }
  );
}
export const jwtRefresh = (originalRequest) => dispatch => {
  dispatch(jwtRefreshBegins());

  axios
    .post('auth/jwt/refresh/', {
      refresh: window.localStorage.getItem('refresh')
    })
    .then(response => {
      window.localStorage.setItem('jwt', response.data.access);
      originalRequest.headers.Authorization = `JWT ${response.data.access}`;
      return axios(originalRequest)
    })
    .catch(err => {
      window.localStorage.removeItem('token');
      window.localStorage.removeItem('jwt');
    })
};

但是我所有的请求都在redux函数中。如果刷新令牌成功,如何再次使redux功能正常?我必须使用redux函数,因为它会更改redux状态。

0 个答案:

没有答案