token失效的简单介绍
本文带来了【token失效】内容供参考阅读,并对相关内容进行了分析,下面就跟随币王网小编一起了解token失效。
ibox用户token失效
进行重新登陆。ibox用户的token失效属于正常情况,一般服务端对token会设置一个不定时的过期时间,用户只能进行重新登陆,重登后自动获取有效的token即可正常使用。

token失效怎么办?
token失效一般有这几种原因:
①token过时了,token设的有效时间太短
②token验证方法有问题
③看一下是不是过滤方法有问题
④如果有缓存看一下是不是缓存问题
实在不行debug短点看一下
谢谢,望采纳
Token过期处理
Token用于进行接口鉴权,但是Token具有由后端设置的过期时间,当Token过期以后,就无法再请求数据了
项目中后端设置的过期时间为24h,测试时我们可以手动修改token值让Token失效
处理方式:
我们观察前面的功能的话,接口的响应信息中是有三个和token相关的信息的
响应拦截器 会在响应接收完毕,在对应请求处理前被拦截器拦截,响应拦截器参数response中保存了相应的信息
那么我们接来下将响应拦截器设置到utils/request.js中,将axios更改为创建的request(因为我们使用了ESLint规范,记得去除所有的分号)
错误处理 ,需要在拦截器中找到特定的错误情况进行token刷新
当出现错误时,通过Elemnt的Message组件设置提示,这里我们采用的是引入方式操作
HTTP 状态码401表示未授权,导致401的情况有:
首先要检测store是否有user信息(有就证明是正常登陆,一定存在的有refresh_token),如果存在的有refresh_token的话就请求新的access_token,需要用到对应的刷新 接口 ,接下来检查是否有新的access_token
如果页面中存在多个请求(大多数页面中都不会只有一次请求),如果Token过期,每个请求都会刷新Token,这个时候刷新多次都没有意义,又增加了请求个数,还会出现额外的问题
通过浏览器的开发者工具观察,有两次的刷新Token请求,由于两次的刷新token携带的refresh_token相同,会导致一次成功一次失败,失败的那一次会导致页面跳转请求页
虽然刷新Token的问题解决了,但是之前发送的两个请求只有一个成功执行,其他的请求都被阻止了
如何解决?
我们声明一个数组存储所有被挂起的请求,当Token刷新完毕再将这些请求重新发送
解决
格力易派提示token失效什么原因
可能是你太久没有登录,原来登录信息已无效。退出账号后重新登录。
开启启动界面的时候,理应发一个confirm去确认token是否过期。如果过期,跳到登陆界面,或者手势,指纹解锁让他进行确认操作以延长token时间。如果没有过期,那么服务端应该延长过期时间,如果对安全有要求可以手势解锁再延长。
平时请求时,如果token过期,接口放应该以httpcode告诉你这个验证失效了,例如返回status为401的response。你可以根据这个response作自己的处理,重新登陆啊,手势解锁啊都可以。如果你的应用对信息安全并没有什么要求,例如只是内容的客户端。那么token过期时间可以延长或者不过期。
toke过期失效 ---提示并跳转到登录页面
token过期自动跳转到登录页面
设置token有效期为2小时,超过两小时 token失效 ,接口返回结果:{code:0,msg:'token过期',}
每次路由跳转都会对token进行判断,设置一个全局的beforeEach钩子函数,如果token存在就跳到你所需要的页面,否则直接跳转到登录页面,让用户重新存取token
全局路由钩子:router.beforeEach
router.beforeEach(async (to, from, next) = {
//获取token
const hasToken = getToken()
if (hasToken) {
//token存在,如果当前跳转的路由是登录界面
if (to.path === '/login') {
// if is logged in, redirect to the home page
next({
path: '/'
})
} else {
//在这里,就拉去用户权限,判断用户是否有权限访问这个路由
} catch (error) {
// remove token and go to login page to re-login
await store.dispatch('user/resetToken')
Message.error(error || 'Has Error')
next(`/login?redirect=${to.path}`)
}
} else {
//token不存在
if (whiteList.indexOf(to.path) !== -1) {
//如果要跳转的路由在白名单里,则跳转过去
next()
} else {
//否则跳转到登录页面
next(`/login?redirect=${to.path}`)
}
}
})
请求拦截 设置
import axios from 'axios'
import { MessageBox, Message } from 'element-ui'
import store from '@/store'
import { getToken } from '@/utils/auth'
const service = axios.create({
baseURL: process.env.VUE_APP_BASE_API,
timeout: 5000
})
//发送请求时把token携带过去
service.interceptors.request.use(
config = {
if (store.getters.token) {
config.headers['sg-token'] = getToken()
}
return config
},
error = {
console.log(error)
return Promise.reject(error)
}
)
//请求响应
service.interceptors.response.use(
response = {
console.log(response.data)
const res = response.data
// token过期,重返登录界面
if (res.code === 0) {
store.dispatch('user/logout').then(() = {
location.reload(true)
})
}
return res
},
error = {
Message({
message: error.msg,
type: 'error',
duration: 5 * 1000
})
return Promise.reject(error)
}
)
export default service
有关token失效分享到这里,想要阅读更多相关内容请关注币王网。
推荐阅读:
关于fxbtc的信息
miota_MioTakaki在线
比特币矿机算力_比特币矿机算力排行
数字货币能赚钱吗_数字货币能暴富吗
triumph_triumph摩托车价格
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。


