//在axios的请求拦截器中进行操作
request.interceptors.request.use((config) => {
const token = sessionStorage.getItem('token')
var isRefreshing = false // 是否有请求正在刷新token
// 如果 token 存在
if (token) {
// 让每个请求携带自定义 token 请根据实际情况自行修改
config.headers['Authorization'] = token
// token续期
const code = jwtDecode(token)
const current = new Date().getTime()
// 过期时间小于当前时间
if (code.exp * 1000 < current) {
notification.error({
message: '未登录',
description: '请重新登录'
})
sessionStorage.clear() // 清除缓存
location.replace('/iam-admin/#/login') // 跳转登陆页
// 过期时间减去十分钟小于于当前时间
} else if (code.exp * 1000 - 10 * 60 * 1000 < current && config.url.indexOf('/renewal/token') === -1) {
if (!isRefreshing) {
isRefreshing = true
// 调用续期方法
refreshToken({}).then((res) => {
if (res.success) {
console.log(res, 'res')
isRefreshing = false
window.sessionStorage.setItem('token', res.data)
}
})
}
}
}
return config
}, (err)=>{
//报错操作
})```
token续期操作
最新推荐文章于 2024-10-11 09:15:00 发布