token的原理及过期处理
Token 是用户登录成功之后服务端返回的一个身份令牌,在项目中的多个业务中需要使用到:
- 访问需要授权的 API 接口
- 校验页面的访问权限
- …
但是我们只有在第一次用户登录成功之后才能拿到 Token。
所以为了能在其它模块中获取到 Token 数据,我们需要把它存储到一个公共的位置,方便随时取用。
往哪儿存?
本地存储
- 获取麻烦
- 数据不是响应式
Vuex 容器(推荐)
- 获取方便
- 响应式的
登录成功,将 Token 存储到 Vuex 容器中
- 获取方便
- 响应式
为了持久化,还需要把 Token 放到本地存储
- 持久化
关于 Token 过期问题
登录成功之后后端会返回两个 Token:
token
:访问令牌,有效期2小时refresh_token
:刷新令牌,有效期14天,用于访问令牌过期之后重新获取新的访问令牌
我们的项目接口中设定的 Token
有效期是 2 小时
,超过有效期服务端会返回 401
表示 Token 无效或过期了。
为什么过期时间这么短?
- 为了安全,例如 Token 被别人盗用
过期了怎么办?
- 让用户重新登录,用户体验太差了
- 使用
refresh_token
解决token
过期
服务器生成token的过程中,会有两个时间,一个是token失效时间,一个是token刷新时间,刷新时间肯定比失效时间长,当用户的 token
过期时,你可以拿着过期的token去换取新的token,来保持用户的登陆状态,当然你这个过期token的过期时间必须在刷新时间之内,如果超出了刷新时间,那么返回的依旧是 401。
处理流程:
- 在axios的拦截器中加入token刷新逻辑
- 当用户token过期时,去向服务器请求新的 token
- 把旧的token替换为新的token
- 然后继续用户当前的请求
token的原理及过期处理相关推荐
- 高性能分布式缓存redis(持久化原理 安全策略 过期删除内存淘汰策略 性能压测 高可用 Redis Cluster)
redis redis(持久化原理 安全策略 过期删除&内存淘汰策略 性能压测 高可用 Redis Cluster) 1. 持久化原理 1.1 持久化流程(落盘) 1.2 RDB详解 1.2. ...
- token系统讲解及过期处理
token系统讲解及过期处理 1. token是什么?用来做什么 2. token存储在哪?过期了怎么办? 3. 请求拦截与响应拦截执行时机(面试重点) 4. 解决token过期方案一: `重新登录` ...
- c# redis 如何设置过期时间_Redis Hash存储token、及设置过期时间
相信大家在很多业务场景都会遇到对数据设置过期时间,如安全认证token.短信验证码等.一般我们的解决有几种:存redis.存数据库.实时计算(如JWT),不管使用哪种方式,需求就是过期了对数据的清理. ...
- struts2令牌(token)内部原理
小菜最近接触了struts2中的令牌知识,由于该知识点比较重要,因此想弄明白些,于是满怀信心的上网查阅资料,结果让小菜很无奈,网上的资料千篇一律,总结出来就一句话:"访问页面时,在页面产生一 ...
- 本地测试如何让token在有效内过期方法
先登录,将token存储在cookie里,然后编辑一下token,随便删除一个字段,token就不存在(过期)了,即可.
- Token登录原理分析
Token 是在服务端产生的.如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端.前端可以在每次请求的时候带上 Token 证明自己的合法地位. Toke ...
- 通过一个简单的例子学习Angular Injection Token工作原理
源代码: const BASE_URL = new InjectionToken<string>('BaseUrl');const injector = Injector.create({ ...
- Token Bucket原理
令牌桶是对通信流中数据进行调节的设备,调节器可以是policy或shaping.令牌桶没有丢弃优先级的策略,相反,令牌桶丢弃令牌,并当数据流超过预定义阀值时,对传输队列进行流量管理. 原理: 1.令牌 ...
- JWT token生成原理
token生成规则: JWT包含三部分:Header(头部),Payload(负载),Signature(签名) //Signature生成 var encodedString = base64Url ...
最新文章
- 阿里云nginx配置ssl证书
- javascript弹出窗口居中代码
- SSM学习(一)Mybatis
- MyBatis之PageHelper分页操作
- 推荐15个 JavaScript 和 CSS 库
- 企业咨询:常用分析和咨询方法列表
- 看图工具—IrfanView
- JAVA学习-JAVA实现1-100的累加
- html根据菜单角色配置菜单代码,CSS设置列表样式和创建导航菜单实现代码
- 大二物竞金牌转北大计算机,物理竞赛保送去北大还是清华?
- NodeJs之npm
- [搜片神器]服务器SQL2005查询分页语句你理解了么
- 2018尚硅谷Git和GitHub视频教程
- Axure9学习笔记1:介绍及安装
- Mugeda(木疙瘩)H5案例课—足球小游戏-岑远科-专题视频课程
- 【SQL】小CASE
- arcgis engine已知图幅号获取比例尺
- SMILES学习笔记
- 【微信开发|PHP】设置关注自动回复,关键词自动回复。
- 最强计算机游戏,这可能是市面上体积最小性能最强的游戏主机了