我使用redux-thunk在我的React应用程序中进行API调用。
每30分钟,用户的持有者令牌过期,而不是强迫他们再次登录,我致电auth/refresh
。这很痛苦,因为我每次拨打电话时都需要检查401 error
。有没有办法使用redux / redux-thunk在一个地方检查这个错误,而不是每次调用?
我还有一个问题,即如果发生多次调用,每次都会调用相同的刷新,所以我最终会多次刷新持有者令牌!
我刷新身份验证令牌的行动:
export const refreshAuth = () => {
return (dispatch, getState) => {
return axios.post(API.path + 'auth/refresh/?' + API.beaconAPI_client, { 'refreshToken': getState().login.refreshToken })
.then(response => {
dispatch({
type: DO_LOGIN_REFRESH,
userDetails: response.data
})
})
}
}
使用Axios,如果发生错误,我会这样做:
.catch(error => {
if(error.response.status === 401){
this.props.refreshAuth()
.then(response => {
/* In the response, make the request again after auth is refreshed */
})
}
})
答案 0 :(得分:0)
您可以使用Axios interceptors将这些处理程序放在一个位置。
axios.interceptors.response.use(null, error => {
switch (error.response.status) {
case 401:
// [Unauthorized] - Wrong or no authentication ID/password provided
store.dispatch(actionToRefreshToken());
break;
default:
...
}