关于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如何应用于会话管理,加之以前的项目中也 ...
随机推荐
- 工作流Activiti学习地址
http://blog.csdn.net/xnf1991/article/details/52610277
- Java根据当前日期获得昨天的当前日期代码实现
代码: import java.text.SimpleDateFormat; import java.util.Date; /** * 根据当前日期获得昨天的当前日期 * @author jinghu ...
- 定位前后端bug
说明 1 : js是静态资源,会缓存到浏览器的客户端,为了清除缓存,需要强制刷新页面,所有的东西强制的到服务器上拿一下 说明 2 :http状态码,服务器响应的一个状态码,标记不同的处理结果 说明 ...
- 决策树(Decision Trees)
简介 决策树是一个预测模型,通过坐标数据进行多次分割,找出分界线,绘制决策树. 在机器学习中,决策树学习算法就是根据数据,使用计算机算法自动找出决策边界. 每一次分割代表一次决策,多次决策而形成决策树 ...
- Lock-less and zero copy messaging scheme for telecommunication network applications
A computer-implemented system and method for a lock-less, zero data copy messaging mechanism in a mu ...
- SQL SERVER-数据库的远程访问解决办法
除了下面的这个RemoteDacEnabled更改为true之后,还要把防火墙关闭,才能通过IP地址访问数据库 来自为知笔记(Wiz)
- 洛谷 P2298 Mzc和男家丁的游戏
P2298 Mzc和男家丁的游戏 题目背景 mzc与djn的第二弹. 题目描述 mzc家很有钱(开玩笑),他家有n个男家丁(做过上一弹的都知道).他把她们召集在了一起,他们决定玩捉迷藏.现在mzc要来 ...
- CentOS进入图形界面
CentOS进入图形界面 学习了: http://www.centoscn.com/CentosBug/osbug/2014/0831/3620.html http://bbs.csdn.net/to ...
- 指尖上的电商---(5)schema.xml配置具体解释
这一节我们看下schema.xml文件中各个节点的配置极其作用.schema.xml文件中面主要定义了索引数据类型,索引字段等信息. 主要包含了下面节点 1.fieldtype节点 fieldtype ...
- 题目1437:To Fill or Not to Fill(贪心算法)
题目描写叙述: With highways available, driving a car from Hangzhou to any other city is easy. But since th ...