前后端分离——token超时刷新策略

前言

记录一下前后端分离下————token超时刷新策略!

需求场景

昨天发了一篇记录 前后端分离应用——用户信息传递 中介绍了token认证机制,跟几位群友讨论了下,有些同学有这么一个疑惑:token失效了,应该怎么做?强制定向到登录页?

其实理论上如果是活跃用户,token失效后,假如用户正在操作表单,此时突然定向到登录页面,那用户体验太差了。

实现目标

  • 延长token过期时间
  • 活跃用户在token过期时,在用户无感知的情况下动态刷新token,做到一直在线状态
  • 不活跃用户在token过期时,直接定向到登录页

登录返回字段

如何签发token,请看上一篇推文,这里不做过多介绍。先看看登录接口返回的数据如下:

 1@Data
2public class LoginVo implements Serializable {
3
4    private static final long serialVersionUID = 6711396581310450023L;
5
6    //...省略部分业务字段
7
8    /**
9     * token令牌 过期时间默认15day
10     */

11    private String jwt;
12
13    /**
14     * 刷新token 过期时间可以设置为jwt的两倍,甚至更长,用于动态刷新token
15     */

16    private String refreshJwt;
17
18     /**
19     * token过期时间戳
20     */

21    private Long tokenPeriodTime;
22
23}

具体返回字段的意义请看注释,这里再简要说明:

  • jwt:用户正常访问接口时提交的token,过期时间设置长一些,15day吧
  • refreshJwt:刷新token 过期时间可以设置为jwt的两倍,甚至更长,用于动态刷新token时候提交后台验证
  • tokenPeriodTime:token过期时间戳,前端每次调用接口前需要主动判断是否已经过期,如果过期则提交refreshJwt访问token刷新的接口进行刷新

动态刷新token

前端检测到token过期后,携带refreshJwt访问后台刷新token的接口,服务端在拦截器中依然对refreshJwt进行解析鉴权

  • 假如refreshJwt也过期了,提示登录过期,强制跳转登录页
  • 假如refreshJwt还在有效期,则签发新的token返回,前端使用最新的token进行接口请求

总结

  • 如果是活跃用户,那么允许他在refreshJwt过期时间与token过期时间的差值这段时间内,不停的动态刷新token,使其做到无感知的状态下一直保持登录状态
  • 如果用户不活跃,在refreshJwt过期时间到了,依然没有使用系统,那么将判定为不活跃用户,此时应当重定向到登录页了

最后

篇幅较短,主要是延续上一篇 前后端分离应用——用户信息传递 遗留问题做一下总结。如果你有更好的做法,欢迎留言告知我,谢谢啦。后续会不定期更新原创文章,欢迎关注公众号 「张少林同学」!

转载于:https://www.cnblogs.com/zhangshaolin/p/10253613.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/450172.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android ImageView的scaleType(图片比例类型)属性与adjustViewBounds(调整视图边界)属性

本文转载自[Android ImageView的scaleType(图片比例类型)属性与adjustViewBounds(调整视图边界)属性]并做了排版的修改(http://www.cnblogs.com/xzbc/p/5098347.html) Android ImageView的scaleType的属性可设置为matrix&#xff…

阿里云@广东:让我们一起上云!

锅炉故障预测 预警准确率95%以上 利用算法模型进行制程能力的 综合分析与评估优化 提升定标效率 时间降低30% 构建垃圾焚烧发电工艺的优化算法模型 综合考虑环保和设备负荷因素 推荐最优工艺参数组合 优化人工操作,提高燃烧效率 中海油能源发展公司 石油钻探预测优化…

程序员的自我经营

程序员的自我经营之道第一层 从你决定迈出校门进入社会的那一刻起,你就进入了一个战场,这个战场虽然没有硝烟弥漫,没有炮火纷飞,但却绝不亚于任何一个真正的战场。你要在这个战场上去搏杀,去竞争,利用各种…

P3966 [TJOI2013]单词

\(\color{#0066ff}{ 题目描述 }\) 小张最近在忙毕设,所以一直在读论文。一篇论文是由许多单词组成但小张发现一个单词会在论文中出现很多次,他想知道每个单词分别在论文中出现了多少次。 \(\color{#0066ff}{输入格式}\) 第一行一个整数N,表示有N个单词。接下来N行每行一个单词,…

Android应用开发—RecyclerView绘制蒙层

背景:如何在跨越两个或两个以上的item绘制一个view,该view需要跟随recyclerView的滑动而整体移动。 Overridepublic void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {super.onDrawOver(c, parent, state);final View child …

排序_3

希尔排序:分组排序 是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序; 随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。 def shell_sort(array)…

face++算法工程实习生面试

2018-01-11 算法工程实习生 自动化工具链方面 面试的知识点非常仔细,十分检验基本功底 1.自我介绍 2.算法题,leetcode 第一题 两数之和 问python中数组和字典的查找时间复杂度 3.git git 4.linux 常用命令 cd - ,cd ,cd ~,cd / awk 读取倒数第一行&a…

IDEA中怎么设置黑色或白色背景?

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 开启软件Intellij IDEA,在编辑框上面找到最前端的File。 点击File,找到Setting,点击进入。 然后在…

大公司体制内创新的困境

周末在家,随手翻看了一点吴军老师的《浪潮之巅》这本书。去年这本书上市之后我从头到尾阅读了一遍,在《浪潮之巅》中吴军老师历数了IT行业公司的兴衰发展史,提出了一个令人印象深刻的“基因决定论”,即由于公司基因的影响&#xf…

java打印调用堆栈的方式

Log.d(TAG,Log.getStackTraceString(new Throwable()));

weblogic jprofile配置

前提: 1.安装好weblogic 2.安装好jprofile 非等待模式: export JAVA_OPTIONS"${JAVA_OPTIONS} -Dweblogic.threadpool.MinPoolSize100 -Dweblogic.threadpool.MaxPoolSize1000 -Djava.awt.headlesstrue -agentpath:/opt/jprofiler9/bin/linux-x64/l…

springboot/git学习资源记录

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 只是记录一下觉得不错的资源: springboot: http://bbs.itmayiedu.com/article/1508826968799 http://blog.720ui.com/tags…

音视频引擎研究

音视频包:http://ishare.iask.sina.com.cn/f/33851582.html 1、WebRTC目的 WebRTC(Web Real-Time Communication)项目的最终目的主要是让Web开发者能够基于浏览器(Chrome\FireFox\...)轻易快捷开发出丰富的实时多媒体应…

我为什么“放弃”从事八年的嵌入式领域

由于嵌入式平台性能所限,以及相应的开发平台,工具,语言所限,导致很多前沿领域的软件工程理论,方法无法实施,有些跟不上时代的感觉。 ……

Linux命令替换字符串

:%s/str1/str2/ 用str2替换str1 转载于:https://www.cnblogs.com/haiyang21/p/10020503.html

人格差异

一.感知方式 感知是获取感受的方式 感觉型【S】 S首先通过五官来直接感知事物。注意点在于当前的事实环境,而不是事实的来源。比如:雪融化了 因为太阳出来了,是事实。雪融化了,因为雪吸收太阳的热量,达到自身融点&…

Hibernate @JoinTable 注解

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 JoinTable支持的属性 属性是否必须说明name否指定该连接表的表名JoinColumns否该属性值可接受多个JoinColumn,用于配置连接表…

潭州课堂25班:Ph201805201 django 项目 第三十九课 后台 文章发布,图片上传到 FastDFS后端实现 七牛云讲解(课堂笔记)...

文章发布: # 1,从前台获取参数# 2,校验参数# 3,把数据保存到数据库# 4,返回执行结果到前台,(创建成功或失败)自定义 froms.py 校验参数 上传图片到七牛云 注册 https://www.qiniu.c…

原来公司需要这样的你

担任项目经理也有几年的时间了,项目组里来了不少的刚毕业或者工作时间不长的年轻人,有精明能干的,有中庸无为的也有自暴自弃混日子的,但再优秀的年轻人也会犯这样那样的错误,我总结起来一般就是以下这些问题&#xff0…

MySQL 实现树形的遍历(关于多级菜单栏以及多级上下部门的查询问题)

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 前言: 关于多级别菜单栏或者权限系统中部门上下级的树形遍历,oracle中有connect by来实现,m…