Всем привет. Подскажите пожалуйста как реализовать interseptor в axios для сохранения дефолтного токена и обновления ?
Ниже код который у меня сейчас есть, и он не работает. В конечном счете все равно в консоли получаю ошибку 401
var APIKit = axios.create({ baseURL: url });
;
export const setClientRefreshToken = async () => {
let refTokenStorage = await AsyncStorage.getItem("refToken");
let payload = {
refreshToken: refTokenStorage,
};
APIKit.interceptors.response.use(
(response) => {
return response;
},
(error) => {
const originalRequest = error.config;
if (error.response.status === 401 && originalRequest.url) {
//переход на логин скрин
return Promise.reject(error);
}
if (error.response.status === 401 && !originalRequest._retry) {
originalRequest._retry = true;
return APIKit.post("/authentication/refresh", payload).then((res) => {
if (res.status === 201) {
APIKit.defaults.headers.common["Authorization"] =
"Bearer " + localStorageService.getAccessToken();
//переход на скрин где был баг
return APIKit(originalRequest);
}
});
}
}
);
};
export const setClientToken = async () => {
let token = await AsyncStorage.getItem("token");
APIKit.interceptors.request.use(
(config) => {
if (token) {
config.headers["Authorization"] = `Bearer ${token}`;
}
return config;
},
(error) => {
Promise.reject(error);
}
);
};
export default APIKit;
Так же пробовал с использование либки
axios-auth-refresh Тоже безуспешно( код ниже )
var APIKit = axios.create({ baseURL: url });
const refreshAuthLogic = async (failedRequest) => {
let refTokenStorage = await AsyncStorage.getItem("refToken");
let payload = {
refreshToken: refTokenStorage,
};
APIKit.post("/authentication/refresh", payload).then((rt) => {
setClientToken(rt.data.token);
return Promise.resolve();
});
};
createAuthRefreshInterceptor(APIKit, refreshAuthLogic)
export const setClientToken = async (token) => {
// let token = await AsyncStorage.getItem("token");
APIKit.interceptors.request.use(
(config) => {
if (token) {
config.headers["Authorization"] = `Bearer ${token}`;
}
return config;
},
(error) => {
Promise.reject(error);
}
);
};
export default APIKit;