Я использую как nuxt-auth, так и nuxt-axios. Я хочу перехватывать все запросы axios и проверять, истек ли срок действия моего токена доступа JWT, если да, я хочу его обновить. Я написал небольшое расширение для nuxt-auth, как показано ниже. Моя проблема в том, что, как только я получу новый токен, $auth.setToken(strategy,newToken)
и $axios.setToken(newToken)
, похоже, не сделают ожидаемых обновлений. Как же тогда мне использовать перехватчиков и помощников? Я не уверен, что это правильное место / способ их использования
var jwtDecode = require("jwt-decode")
export default function({$auth, $axios}) {
const strategy = "local"
$axios.onRequest( async(config) => {
if ($auth.loggedIn) {
let refreshToken = "some confidtion"
if (refreshToken) {
try {
await refreshAccessURL()
} catch (error) {
return Promise.reject(error)
}
}
}
return config
})
async function refreshAccessURL() {
const refresh = $auth.getRefreshToken(strategy)
try {
const { access } = await $axios.$post(refreshURL, { refresh })
const newToken = "Bearer " + access
$auth.setToken(strategy, newToken)
$axios.setToken(newToken)
return newToken
} catch (e) {
$auth.logout()
throw new Error(e)
}
}
}