Всем привет, пытаюсь сделать авторизацию с помощью jwt во vue. Никак не получается сделать автоматическое обновление access токена в axios, использую этот пакет
https://www.npmjs.com/package/axios-auth-refresh, функция обновления токена, как в инструкции, вызывает экшен из vuex :
const refreshAuthLogic = async () => {
await store.dispatch('refreshTokens');
return Promise.resolve();
}
Вот сам экшен
:
refreshTokens: async function ({commit, state}) {
const { data } = await this._vm.$
http.post('api/token/refresh',{refresh: state.refreshToken});
commit('setTokens', {accessToken: data.access, refreshToken: data.refresh});
}
и мутация
:
setTokens: function (state, payload) {
state.accessToken = payload.accessToken;
state.refreshToken = payload.refreshToken;
this._vm.$http.defaults.headers.common['Authorization'] =
Bearer ${payload.accessToken}
;
localStorage.setItem('access-token', payload.accessToken);
localStorage.setItem('refresh-token', payload.refreshToken);
}
проблема в том что у меня есть экшен, который проверяет токен на стороне сервера
:
verifyLoggedIn: async function ({commit, state}) {
if (state.accessToken) {
try {
await this._vm.$
http.post('api/token/verify', {token: state.accessToken});
} catch(error) {
if (error.response.status === 401) {
commit('clearTokens');
}
}
}
}
и если срок жизни access токена истек, то он вызывает 401 ошибку, хотя по идее токен должен рефрешнуться. Кто может подсказать в чем ошибка?