token过期处理,js处理登录身份过期,vue处理token登录过期,前端本地token过期处理,前后端分离token超时刷新策略,token过期解决

处理token过期返回到登录页面重新进行登录。

一半后台都会返回个过期时间  前端的也需要定时调用这个接口去刷新token 或者 每次去请求下接口看token是否过期。

我这这里做了这样的我操作。 

// 登录操作的请求
this.$axios.post('请求地址').then(res => {
    console.log('获取到了用户的token', res)
    localStorage.setItem('token', JSON.stringify(res))
    // 这里设置过期时间我没有用后台返回的自己换成了6个小时
    // 当前时间加6个小时的时间就是token过期的时间然后存在本地缓存中
    let date = new Date().getTime() + (6 * 3600 * 1000)
    localStorage.setItem('tokenTime', date)
})

然后在utils.js中添加公共方法 监听当前时间减去token过期的时间是否大于0 

/** 
 * 监听token过期时间
 * @return: Boolean
 */
export const tokenExpressInTime = () => {
  let date = new Date()  
  let tokenTime = localStorage.getItem('tokenTime')
  // 当前时间减去获取本地过期时间的值是否大于0   大于0为过期返回true 否则返回false
  return (date.getTime() - Number(tokenTime)) > 0 ? true : false
}

在axios.js中 全局拦截中添加判断代码

import { tokenExpressInTime } from '../utils/utils.js'
import { Message  } from 'element-ui'

// 添加请求拦截器
service.interceptors.request.use(config => {
  // 在拦截器中添加判断 
  // 每次接口请求的时候进行判断 tokenExpressInTime 方法返回true 并且本地存在token 则为token过期   清空本地缓存  进行重新登录的操作
  if (tokenExpressInTime() && localStorage.getItem('token')) {
    Message({type:'error', center: true, message:'登录超时请重新登录', duration:2000})
    setTimeout(() => {
      localStorage.clear()
      location.href = '/'
    }, 1500)
    return false
  }
  return config;
}, error => {
  console.log('error request:', error)
  return Promise.reject(error);
})

一般情况下后端都会返回过期时间  前端进行定时调接口。进行token刷新。

我在这里处理是前端保存起来时间 在每次进行接口请求的同时拦截进行判断。免除接口调用或者本地进行定时器的操作。

个人想法,大佬有好意见,欢迎评论区指点。

转发请标注 原创链接 谢谢   https://blog.csdn.net/weixin_38356321/article/details/103488150

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

糖葫芦加冰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值