Я использую redux-thunk для выполнения вызовов API в моем приложении React.
Каждые 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 */
})
}
})