Ich habe eine Anfrage Interceptor für Axios Anrufe. Es prüft mein jwt-Token und fordert bei Bedarf eine Aktualisierung an.Axios Request Interceptor warten bis Ajax Anruf
axios.interceptors.request.use((config) =>{
const state = store.getState(); // get renewed state
const time = Math.floor(new Date().getTime()/1000);
if(
! state.app.jwtRefreshOnRequest
&& time >= state.jwt.expires - 120
&& state.jwt.refresh_before > time
){ // expiring in 2 min. refresh
//dispatch({type: 'JWT_REFRESH_REQUEST'});
axios.get(API_BASE_URL + '/auth/refresh')
.then(function(response){
// dispatch({type: 'JWT_REFRESH_SUCCESS', payload: response.data});
axios(config).then(resolve, reject);
})
.catch(function(err){
reject(err);
});
}
return config;
});
Dieser Code ruft die Refresh richtig und speichert die neuen Token, aber der ursprüngliche Anruf nicht hält nicht, bis die Abfangjäger Anfrage erfolgt, so dass die abgelaufenen Token verwendet werden.
Also, ich denke, ich muss einen synchronen Aufruf von Interceptor machen.
Danke, es hat funktioniert. Ich habe viel von deiner Antwort gelernt :) – Sisir