vue后台如何刷新过期的token_Vue刷新token,判断token是否过期、失效的最简便的方法...

刷新token和token是否过期的操作都是由后端实现,前端只负责根据code的不同状态来做不同的操作:

一、判断token是否过期、失效

举例:一般响应状态码 code :0,表示请求成功。①响应状态码 code:10010表示token过期 ②响应状态码 code:10011 表示token无效。这些状态码都由你自己和后端的同学一起定义。code等于10010和10011这两种状态都会跳转到登录页,重新进行登录并获取最新的token。

二、在一定时间内刷新token

为什么需要刷新token?因为出于安全性的考虑,一般是一天或几个小时更新token,看项目需要。

怎么实现?我和后端的同学是这么定义的,在发送任何一次请求时,如果需要更新token,响应体中后端的同学给我返回了token这个字段,token出现在了响应体中,说明这时候是需要刷新token的(其他非刷新token的请求时是没有token字段的),这时用localStorage保存最新token,自动覆盖掉原来旧的token,这样下次再调用新接口时用的就是最新的token了,这样用户也感知不到token更新的过程。

三、具体实现

/**

* 全局变量 和 设置 、配置等。。。*/import axios from'axios' //引入axios

import Storage from'@/assets/js/util/storage.js' //storage工具类,简单的封装

axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'

/*请求拦截器*/axios.interceptors.request.use(function (config) { //每次请求时会从localStorage中获取token

let token= Storage.localGet('token')if(token) {

token= 'bearer' + ' ' + token.replace(/'|"/g, '') //把token加入到默认请求参数中

config.headers.common['Authorization'] =token

}returnconfig

},function(error) {returnPromise.reject(error)

})/*响应拦截器*/axios.interceptors.response.use(function (response) { //①10010 token过期(30天) ②10011 token无效

if (response.data.code === 10010 || response.data.code === 10011) {

Storage.localRemove('token') //删除已经失效或过期的token(不删除也可以,因为登录后覆盖)

router.replace({

path:'/login' //到登录页重新获取token

})

}else if (response.data.token) { //判断token是否存在,如果存在说明需要更新token

Storage.localSet('token', response.data.token) //覆盖原来的token(默认一天刷新一次)

}returnresponse

},function(error) {returnPromise.reject(error)

})

缓存工具类 Storage

var Storage ={//==================sessionsTorage设置缓存================

//设置缓存

sessionSet: function(name, data) {

sessionStorage.removeItem(name)

sessionStorage.setItem(name, JSON.stringify(data))

},//获取缓存

sessionGet: function(name) {returnJSON.parse(sessionStorage.getItem(name))

},//清除缓存

sessionRemove: function(name) {

sessionStorage.removeItem(name)

},//==================localStorage设置缓存==================

//设置缓存

localSet: function(name, data) {

localStorage.removeItem(name)

localStorage.setItem(name, JSON.stringify(data))

},//获取缓存

localGet: function(name) {returnJSON.parse(localStorage.getItem(name))

},//清除缓存

localRemove: function(name) {

localStorage.removeItem(name)

}

}

exportdefault Storage

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值