Привет!
Нужно перед каждым ajax-запросом проверять срок действия access_token, и если просрочен перед ajax-запросом сделать запрос на его перевыпуск по refresh_token.
Делаю так:
Vue.http.interceptors.push((request, next) => {
var accessToken = null
if (window.location.pathname !== '/login') {
if (window.localStorage && typeof window.localStorage.user !== 'undefined' && typeof window.localStorage.user_auth !== 'undefined') {
var _user = JSON.parse(window.localStorage.user)
var userAuth = JSON.parse(window.localStorage.user_auth)
var interval = parseInt(new Date().getTime() / 1000) - userAuth.timestamp
// ставим - 10 секунд, перестраховываемся на счет задержки при выдачи токена
if (interval > userAuth.expires_in - 10) {
if (request.url !== 'https://api.domain.ru/v1/oauth/refresh') {
accessToken = user.refreshToken(_user.id, userAuth.refresh_token)
request.headers.set('Authorization', 'Bearer ' + accessToken)
}
next()
}
} else {
}
accessToken = store.state.userAuth.access_token
request.headers.set('Authorization', 'Bearer ' + accessToken)
}
})
Но получается какая то порнография.
Как лучше это сделать?