前端解决token失效问题,实时刷新token
1.判断token实现,在axios.js请求拦截器里面,判断import { getRefreshToken, isRefreshTokenExpired } from './format' //刷新token的接口与过期时间倒计时// if (token) {//有没有token//isRefreshTokenExpired(resetTime);//if (resetTime < 12
·
1.判断token实现,在axios.js请求拦截器里面,判断
import { getRefreshToken, isRefreshTokenExpired } from './format' //刷新token的接口与过期时间倒计时
// if (token) {//有没有token
// isRefreshTokenExpired(resetTime);
// if (resetTime < 120) {//时间少于20分钟(1200),20分钟之内为期限
// if (!window.isReresh) {
// window.isReresh = true;
// let refresh_token = sessionStorage.getItem('refresh_token')
// getRefreshToken(refresh_token).then(res => {
// window.isReresh = false;
// isRefreshTokenExpired(res.data.resetTime);// 重新获取的token有效时间
// store.commit('changeLogin', {//vuex中修改相关信息
// Authorization: res.data.access_token,
// token_type: res.data.token_type,
// refresh_token: res.data.refresh_token,
// });
// }).catch(err => { });
// }
// } else{
// window.isReresh = false;
// setLoginToLocal('');
// if(res.code == 20010) {
// // token过期
// router.push({
// name: "/login"
// })
// Message({
// message: res.message,
// type: 'error',
// center: true,
// duration: 2 * 1000
// });
// }
// }
// }
// if (res.code == 20011) {
// if (getLoginToLocal()) {
// setLoginToLocal('');
// router.push({
// name: "/login"
// })
// }
// } else if (res.code == 200102) {
// // token过期
// router.push({
// name: "/login"
// })
// Message({
// message: res.message,
// type: 'error',
// center: true,
// duration: 3 * 1000
// });
// }
// else {
// Message({
// message: res.message,
// type: 'error',
// center: true,
// duration: 5 * 1000
// });
// }
2.format.js
import axios from "axios";
// import base from '../base'; // 导入接口域名列表
export function getRefreshToken(token,key){
// 刷新token 用到server
return axios.get('/api/member/refreshToken',
{
headers: {
'AccessToken': token,
"AccessKey":key
},
})
.then((res) => {
return Promise.resolve(res.data)
})
}
export function isRefreshTokenExpired(timestamp) {
clearInterval(window.interval);
window.interval = setInterval(()=>{
if(timestamp>0){
timestamp=timestamp-1
sessionStorage.setItem('resetTime',timestamp)
}
},1000)
}
此方法会存在问题,当刷新token函数和另一函数同时执行的时候,token还是去的刷新之前的值,所以会造成失效,在此只是记录下此思路
更多推荐
所有评论(0)