(1)可以通过响应拦截器或者全局前置守卫强制跳转登录页

// 全局前置守卫
router.beforeEach((to, from) => {let token = sessionStorage.token;if (token) {return true} else {return { name: 'Login', query: { redirect: to.fullPath } };}
})
// 添加响应拦截器
axios.interceptors.response.use(function (response) {// 2xx 范围内的状态码都会触发该函数。
}, function (error) {// 超出 2xx 范围的状态码都会触发该函数。// 对响应错误做点什么let { response: { status } ,config:{url}} = error//消息提示switch (status) {case 401: ElNotification.error({title: `错误${status}`,message: '登陆的token过期或者无效请重新登录',});// 获取当前页面路径let { fullPath } = router.currentRoute.value// 重定向到登陆页面,附带redirect参数router.replace({ name: 'Login', query: { redirect: fullPath } })break;case 403: ElNotification.error({title: `错误${status}`,message: '登陆的token过期或者无效请重新登录',});break;}
});

但这样面临着问题

无感刷新token

(2)双token

有一些项目token过期获取新的token时候,不止获取access_token,虽然refresh_token没有过期,也会获取,也就是说两个token都获取并更新存放在浏览器中。

(三)使用旧token获取新token

如果采取单个token的方式要实现token的自动刷新,就必须使用定时器,每隔一段时间自动刷新token,并且这个时候token一定要是没有过期的,因为如果已经过期的token也可以用来刷新,这和长期有效的token也没什么不同。但这种方式存在一定的问题:

为了保证同一时间,账户只被单个用户登录,后端必然要保证一个账户的多个token只有一个生效,最简单的方式就是使用分布式缓存中间件如redis,而存在并发请求时,可能前一个请求带着的是旧token,此时又到了刷新token的时间,就会产生请求的token与服务端存储的token不一致的问题
使用定时器是增加了性能的损耗,不是最佳的手段

token过期怎么办 无感刷新token相关推荐

  1. 使用Axios进行无感刷新Token

    前言 本人在开发项目时,在做登录模块时,参考了oauth2,在用户认证成功后会返回给前端一些令牌相关数据.接下来,再用进行接口请求时,前端根据令牌数据进行一系列的判断,然后做出最好的选择. 举个例子: ...

  2. 实现无感刷新token我是这样做的

    大家好,我是漫步,今天来分享一个登录常常遇到的难题,即登录超时时间与安全性的纠结问题. 原文: https://juejin.cn/post/6983582201690456071 前言 最近在做需求 ...

  3. Laravel6通过jwt(tymon/jwt-auth)实现API用户无感刷新TOKEN

    Laravel6通过jwt实现API用户无感刷新TOKEN 1.TOKEN是什么 2.jwt是什么 3.jwt安装&配置 3.1.通过composer安装 3.2.发布配置 3.3.生成加密密 ...

  4. Vue 无感刷新token

    关于无感刷新的理解:  实现token无感刷新对于前端来说是一项非常常用的技术,其本质是为了优化用户体验,当token过期时不需要用户跳回登录页重新登录,而是当token失效时,进行拦截,发送刷新to ...

  5. 实现无感刷新 token 我是这样做的

    原文: https://juejin.cn/post/6983582201690456071 前言 最近在做需求的时候,涉及到登录token,产品提出一个问题:能不能让token过期时间长一点,我频繁 ...

  6. 关于无感刷新Token,我是这样子做的

    本文正在参加「金石计划 . 瓜分6万现金大奖」 什么是JWT JWT是全称是JSON WEB TOKEN,是一个开放标准,用于将各方数据信息作为JSON格式进行对象传递,可以对数据进行可选的数字加密, ...

  7. uniapp 实现无感刷新token, 适应大多数项目

    不管你是用taro uni 还是vue-cli 或者 react-cli 刷新token这块一通百通 本质上 都一样 我之前讲了一个是 在响应拦截哪里做token刷新 其实这样做还是不好的,因为这样我 ...

  8. 无感刷新token方法

    通常,对于一些需要记录用户行为的系统,在进行网络请求的时候都会要求传递一下登录的token.不过,为了接口数据的安全,服务器的token一般不会设置太长,根据需要一般是1-7天的样子,token过期后 ...

  9. 微信小程序token过期后重新执行失效的请求封装(用户无感刷新token)

    考虑接口时效性和安全性,后端增设了token验证,确保我们的单个token只使用一次,使用后就立即失效,但是也为了防止在实际进程中异步请求的出现,所以重新封装了请求方法. 要求是在执行某个请求时,如果 ...

最新文章

  1. Leetcode 剑指 Offer 09. 用两个栈实现队列 (每日一题 20210915)
  2. 安川g7接线端子图_图解西门子S7-300plc模拟量模块接线方法
  3. java smtp pop3_POP3/SMTP指令
  4. Android使用Intent完成活动之间的通信
  5. 同行代码评审过程中的实践经验
  6. 基于PWM调宽的呼吸灯算法
  7. 51单片机 Proteus仿真 身高体重测量 HX711 超声波SR-04
  8. Django - installing mysqlclient error: mysqlclient 1.4.0 or newer is required; you have 0.9.3
  9. 不容忽视的细节——线面积分中的奇点
  10. Kali开机后的初始化配置
  11. Android中的指纹识别
  12. 第 4 题 打折日期交叉问题
  13. PTA 清点代码库 (25 分)
  14. java微博源码_基于jsp的微博-JavaEE实现微博 - java项目源码
  15. 王兴的无限游戏和美团的三维文明世界|一点财经
  16. Nginx同一个域名配置多个项目
  17. 3DMax如何制作弧形椅子?
  18. tomorrow - 明天
  19. 智慧路灯商业模式分析:智慧灯杆如何盈利?12项盈利模式汇总
  20. 安卓linux病毒,如何清除linux病毒

热门文章

  1. Linux 清理缓存和缓存内容
  2. 这两天在看《大国崛起》
  3. %.nf和%m.nf的区别
  4. 金融知识杂记(三)顺周期板块?最大回撤?主动型基金VS被动型基金?基金混合A和混合C的区别?ETF,LOF基金?基金持仓作业
  5. 作死之旅: 数据动态可视化
  6. 有没有便宜又好用的运动耳机?便宜实惠的运动耳机推荐
  7. java回调机制详解
  8. 请用一段简单的代码讲述一个悲伤的故事
  9. 独家专访:中国4G智能手机崛起带来更严格的测试需求
  10. 新闻营销、微博营销、微信营销、视频营销、论坛营销、问答营销、写作策划、报刊发表