关于Jwt的一些思考
在使用
jwt
的过程中发现了两个问题续期和退出的问题。
续期
因为jwt
的token
在签发之后是有过期时间的,所以就存在管理这个过期时间的问题。我看网上有提出解决方案的大致有下面几个
- 每次更新过期时间,跟session一样,每次请求的时候都会去更新下
token
过期时间.但是对于jwt
来说,更新过期时间就意味着jwt
的token
会变,那么前端就需要每个请求都去保存一次新的token
。这样使得前端的工作变的复杂起来。而且这样做的话,会存在多个令牌同时有效,可能会引起一些安全问题。 - 还有一个就是每隔一段时间去更新一次
token
。这种做法也是很多人采用的一种。比如:token
过期时间是一个小时。预设每五十五分钟去更新token
。这种模式也是需要前端去配合完成的。
退出
因为token
在签发之后在一段时间内是一直有效的,那么这种情况,我们怎么去管理登出呢?
- 简单的方式就是客户端直接删除
token
。但是这样的话,如果token
泄露了也是不安全的。 - 有人提出退出的时候将
token
存放在redis
中,过期时间设置为跟token
的时候一样。当用户在次用旧的token
访问的时候,如果发现redis
中存在token
,那么提示token
过期。
对于续期的话,个人觉得第二种方案是比较好的一种方案。而退出的话,如果不考虑泄露的问题,那么第一种方案是比较好的一种方案。但是如果做SSO
的话可能第二种方案是比较好的一种,但是在用到了redis
之后就违背了jwt
的设计初衷,需要与数据库交互。
其实个人觉得,jwt
的加密方式结合redis
这种也是可以采用的。毕竟这些都是为了解决问题。当利用到redis
之后,我们就可以将jwt
扩展下。在payload
部分加载一个生成的refresh token
,这个refresh token
也是有过期时间的,我们需要将这个refresh token
存放在redis
中。这样的话,我们就可以把jwt
的过期时间放在这个refresh token
中维护。续期也就是维护这个refresh token
的过期时间,退出的话 也就是删除这个refresh token
就可以了。
其实这样的话就跟传统的token
验证一样了,也就是外层加了一个jwt
的验证。
可能是我对于这方面了解的比较少,不能想到什么有效的方案。这些都是自己对jwt
的一些理解。如果哪位大佬有更好的方案,希望赐教。感谢
原文地址:https://segmentfault.com/a/1190000016650479
关于Jwt的一些思考的更多相关文章
- JSON WEB Token(JWT)
最近面试被问及单点登陆怎么解决?自己的项目前后端分离,自己实现token认证,token有失效时间,token中包含用户基本的信息.且一个当用户重新登陆后,原来的token就会失效,这么安全的一个to ...
- 从零玩转SpringSecurity+JWT整合前后端分离
从零玩转SpringSecurity+JWT整合前后端分离 2021年4月9日 · 预计阅读时间: 50 分钟 一.什么是Jwt? Json web token (JWT), 是为了在网络应用环境间传 ...
- 刷题[HFCTF2020]EasyLogin
前置知识 node.js koa框架常用目录,文件 js弱类型语言,空数组与整数1比较时,返回turue jwt令牌 博客讲解: 关于jwt的讲解: http://www.ruanyifeng.com ...
- jwt 实践应用以及特殊案例思考
JSON Web Token 是 rfc7519 出的一份标准,使用 JSON 来传递数据,用于判定用户是否登录状态. jwt 之前,使用 session 来做用户认证. 以下代码均使用 javasc ...
- spring cloud实战与思考(五) JWT之携带敏感信息
需求: 需要将一些敏感信息保存在JWT中,以便提高业务处理效率. 众所周知JWT协议RFC7519使用Base64Url对Header和Payload的Json字符串进行编解码.A JWT is re ...
- spring cloud实战与思考(四) JWT之Token主动失效
需求: JWT泄露.密码重置等场景下,需要将未过期但是已经不安全的JWT主动失效. 本文不再复述JWT的基础知识,不了解的小伙伴可以自行Google一下.这里主要是针对以上需求聊一聊解决方案.如果服务 ...
- 关于JWT(Json Web Token)的思考及使用心得
什么是JWT? JWT(Json Web Token)是一个开放的数据交换验证标准rfc7519(php 后端实现JWT认证方法一般用来做轻量级的API鉴权.由于许多API接口设计是遵循无状态的(比如 ...
- jwt的思考
什么是jwt jwt的问题 jwt的是实践 https://www.pingidentity.com/en/company/blog/posts/2019/jwt-security-nobody-ta ...
- 看图理解JWT如何用于单点登录
单点登录是我比较喜欢的一个技术解决方案,一方面他能够提高产品使用的便利性,另一方面他分离了各个应用都需要的登录服务,对性能以及工作量都有好处.自从上次研究过JWT如何应用于会话管理,加之以前的项目中也 ...
随机推荐
- input上传文件获取文件后缀名+select通过text选中option
1.input获取后缀名 var fileName = $("input[type='file']").val();//获取上传的文件(单个) var extName = file ...
- ECharts树图节点过多时取消缩放,调整容器高度自适应内容变化
问题现象 使用ECharts树图,在数据维度大,节点过多时,所看到的内容会重叠交错,无法查看. 原因 在给定ECharts树图容器尺寸后,无论数据多么庞大或者稀少,数据始终会尝试在给定容器内撑满.全部 ...
- BZOJ 1176/2683 Mokia (三维偏序CDQ+树状数组)
题目大意: 洛谷传送门 三维偏序裸题.. 每次操作都看成一个三元组$<x,y,t>$,表示$x,y$坐标和操作时间$t $ 询问操作拆成$4$个容斥 接下来就是$CDQ$了,外层按t排序, ...
- python 面向对象 类的内置方法
判断是不是类cls的对象 class A: pass a = A() print(isinstance(a,A)) 判断类sub是不是super的子类 class A: pass class B(A) ...
- MRv2 工作机制 、 公平调度器、MR压缩、边数据
对于节点数超过 4000 的大型集群,前一节描述的 MapReduce 系统开始面临着扩展的瓶颈. 2010 年 Yahoo 的团队开始设计下一代的 MapReduce. (Yet Another R ...
- 练练脑,继续过Hard题目
http://www.cnblogs.com/charlesblc/p/6384132.html 继续过Hard模式的题目吧. # Title Editorial Acceptance Diffi ...
- IntelliJ IDEA could not autowire no beans of 'Decoder'
IntelliJ IDEA could not autowire no beans of 'Decoder' 学习了:http://blog.csdn.net/u012453843/article/ ...
- EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER
EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER ...
- SQL学习之使用order by 依照指定顺序排序或自己定义顺序排序
我们通常须要依据客户需求对于查询出来的结果给客户提供自己定义的排序方式,那么我们通常sql须要实现方式都有哪些,參考很多其它资料总结例如以下(不完好的和错误望大家指出): 一.假设我们仅仅是对于在某个 ...
- C#高级编程五十八天----并行集合
并行集合 对于并行任务,与其相关紧密的就是对一些共享资源,数据结构的并行訪问.常常要做的就是对一些队列进行加锁-解锁,然后运行类似插入,删除等等相互排斥操作. .NET4提供了一些封装好的支持并行操作 ...