“Токен автоматического обновления (обратный вызов)” Ответ

Токен автоматического обновления (обратный вызов)

function refreshToken(store, cb) {
    if (store.state.auth.isRefreshing) {
        const chained = store.state.auth.refreshingCall.then(cb);
        store.commit('auth/setRefreshingCall', chained);
        return chained;
    }
    store.commit('auth/setRefreshingState', true);
    const refreshingCall = Axios.get('get token').then(({ data: { token } }) => {
        store.commit('auth/setToken', token)
        store.commit('auth/setRefreshingState', false);
        store.commit('auth/setRefreshingCall', undefined);
        return Promise.resolve(token);
    }).then(cb);
    store.commit('auth/setRefreshingCall', refreshingCall);
    return refreshingCall;
}
Inquisitive Ibis

Токен автоматического обновления (обратный вызов)

Axios.interceptors.response.use(response => response, error => {
    const status = error.response ? error.response.status : null

    if (status === 401) {

        return refreshToken(store, _ => {
            error.config.headers['Authorization'] = 'Bearer ' + store.state.auth.token;
            error.config.baseURL = undefined;
            return Axios.request(error.config);
        });
    }

    return Promise.reject(error);
});
Inquisitive Ibis

Ответы похожие на “Токен автоматического обновления (обратный вызов)”

Вопросы похожие на “Токен автоматического обновления (обратный вызов)”

Больше похожих ответов на “Токен автоматического обновления (обратный вызов)” по JavaScript

Смотреть популярные ответы по языку

Смотреть другие языки программирования