1
我有一个axios调用的请求拦截器。它检查我的jwt令牌并在必要时调用刷新。Axios请求拦截器等到ajax调用完成
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;
});
此代码调用正确的刷新并保存新的令牌,但原来的呼叫不持有,直到拦截请求完成的,所以使用了过期的令牌。
所以,我想我需要从拦截器进行同步调用。
谢谢,它工作。我从你的回答中学到了很多东西:) – Sisir