token & refresh token 机制总结

废话

我在项目上写了个配置页面,之前很简单直接登录,毕竟配置页面自己人用就没有做token机制,后来公司的安全审核不过,现在要加上token和刷新机制。小结一下。

token和刷新机制

token机制就是在登录成功后返回一个token,并缓存起来,之后每个请求头里带上token,后端验证不通过返回401,前端就直接跳转到登录页。这样就能防止直接访问某个链接就能跳到登录页的尴尬局面。

token刷新机制就是在使用的时候使用某个机制使得这个token不过期,不会跳转到登录页。而没有使用的时候token会过期,他隔得太久了再调接口就是401,就会跳到登录页。

两种token刷新机制

第一种(后端提供刷新接口)

客户端 服务端
--- 发送username & password --->
<--- 返回accesstoken & refreshtoken ---
--- 访问接口携带accesstoken --->
<--- 返回信息/401 ---
--- accesstoken过期访问刷新接口携带refreshtoken --->
<--- 返回新的accesstoken/401 ---
--- 访问接口携带新的accesstoken --->
<--- 返回信息/401 ---

这种情况下 refreshtoken可以设置的时间长一点,而accesstoken设置的时间短一点,我们固定一个用户活跃周期;

活跃周期 = token周期 * 2 ;

eg:活跃周期(at);token周期(et);accesstoken(5 min);refreshtoken(1 day);
用户在15:00登录,返回token生命周期(et)是[15:00-15:05];用户活跃周期为[15:00-15:10];
如果用户在15:06调用接口,携带accesstoken会返回401过期,此时在活跃周期范围内,则调用refreshtoken刷新接口,返回新的accesstoken;
此时:et[15:06-15:11],at[15:06-15:16];
如果用户在15:17分调用接口携带accesstoken会返回401过期,此时不再活跃周期内,则跳转到登录页;

第二种(靠前端cookie实现)

客户端 服务端
--- 发送username & password --->
<--- 返回accesstoken ---
cookie存储设置过期时间
--- 访问接口携带accesstoken --->
<--- 返回信息/401 --->
调用成功,覆盖延长cookie过期时间 --->

这种情况后端accesstoken可以设置的时间长一点;

前端将token存在cookie中,维护一个过期时间,每次调用接口成功后就覆盖延长这个过期时间,不调用接口的时候自然会超时了;

以上;

最新文章

  1. 如何在SqlServer中获取前端连接的IP地址,计算机名等信息
  2. qq2440启动linux后插入u盘出现usb 1-1: device descriptor read/64, error -110,usb 1-1: device not accepting address 8, error -110
  3. python异常处理[转]
  4. 解决Failed to load class &quot;org.slf4j.impl.StaticLoggerBinder&quot;
  5. LeetCode:4_Median of Two Sorted Arrays | 求两个排序数组的中位数 | Hard
  6. [Python] Basic operations in Pycharm
  7. JAVA嵌入运行Groovy脚本
  8. 接收时必须库存可处理标识为Y
  9. 【第三篇】学习 android 事件总线androidEventbus之list数据事件的传递,发送list数据事件到另外一个Activity
  10. mysql 练习题
  11. redis 初识
  12. 网络对抗技术 20165220 Exp6 信息搜集与漏洞扫描
  13. input file实现多选和限制文件上传类型
  14. Android Dialog 简单封装
  15. ionic3 Injectable 引入NavController
  16. spring-dao.xml配置问题(一)
  17. linux-openvpn
  18. 为什么HashMap不是线程安全的
  19. Codeforces Round #765 Div.1 F. Souvenirs 线段树
  20. 03.安装jdk8作为系统环境

热门文章

  1. C++ primer plus读书笔记——第15章 友元、异常和其他
  2. OOP第二章博客
  3. 测试报告$\alpha$
  4. 大量客户名片如何轻松导入到CRM系统里?
  5. 29.Map,可变参数
  6. 19 常用API
  7. 最全的cURL命令使用
  8. [bug] MapReduce卡死
  9. Linux系统(控制节点)部署环境
  10. Java lambda 表达式详解(JDK 8 新特性)