当前位置:网站首页>JWT主动校验Token是否过期
JWT主动校验Token是否过期
2022-08-04 21:00:00 【詹Sir(开源字节)】
JSON Web Token(简称 JWT)是目前最流行的跨域认证解决方案
在前后端分离开发时为什么需要用户认证呢?原因是由于HTTP 协定是不储存状态的(stateless),这意味着当我们透过帐号密码验证一个使用者时,当下一个 request 请求时它就把刚刚的资料忘了。于是我们的程序就不知道谁是谁,就要再验证一次。所以为了保证系统安全,我们就需要验证用户否处于登录状态。
JWT 组成
JWT 由三部分组成:Header,Payload,Signature 三个部分组成,并且最后由.拼接而成。
JWT 校验原理
通过前面讲解的 jwt 生成规则,jwt 前两部分是对 header 以及 payload 的 base64 编码。 当服务器收到客户端的 token 后,解析前两部分得到 header 以及 payload,并使用 header 中的算法与服务端本地私有 secret 进行签名,判断与 jwt 中携带的签名是否一致。
主动校验是否过期
在一些表单提交的业务场景会去校验Token是否有效,如果此时token已过期,那么前端会提示用户重新登录。如开源字节租房小程序提交房源的场景就是如此。该操作模式会导致用户输入的数据丢失,造成用户体验很糟糕,因此在租房小程序中我们实现了主动校验token的功能,在我们打开表单的同时就去校验token,此时用户并没有输入任何数据。通过此方式改善了用户的体验。
/** * 验证令牌是否过期 */ public boolean isExpiration(String token) { try { Claims claims = parseToken(token); String userKey = getTokenKey(claims.get(Constants.LOGIN_USER_KEY).toString()); LoginUser loginUser = redisCache.getCacheObject(userKey); long expireTime = loginUser.getExpireTime(); long currentTime = System.currentTimeMillis(); if (expireTime - currentTime <= 0) { return true; } } catch (Exception e) { return true; } return false; } /** * 从令牌中获取数据声明 * * @param token 令牌 * @return 数据声明 */ private Claims parseToken(String token) { return Jwts.parser() .setSigningKey(secret) .parseClaimsJws(token) .getBody(); }
以上分享内容在开源字节低代码平台中可免费获取,前往围观
如若转载,请注明出处:开源字节 https://sourcebyte.cn/article/212.html
边栏推荐
- [Teach you to use the serial port idle interrupt of the STM32HAL library]
- 动态数组底层是如何实现的
- [2022 Hangzhou Electric Power Multi-School 5 1012 Questions Buy Figurines] Application of STL
- 关于 SAP 电商云 Spartacus UI SSR 的 state transfer 问题
- 知识分享|如何设计有效的帮助中心,不妨来看看以下几点
- Big capital has begun to flee the crypto space?
- 深度解析:为什么跨链桥又双叒出事了?
- 【编程思想】
- KubeSphere简介,功能介绍,优势,架构说明及应用场景
- 长时间序列遥感数据处理及在全球变化、物候提取、植被变绿与固碳分析、生物量估算与趋势分析等领域中的应用
猜你喜欢
QT(41)-多线程-QTThread-同步QSemaphore-互斥QMutex
项目难管理?先学会用好甘特图(内附操作方法及实用模板)
3、IO流之字节流和字符流
C语言之实现扫雷小游戏
推荐系统_刘老师
After encountering MapStruct, the conversion between PO, DTO and VO objects is no longer handwritten
Web3安全风险令人生畏,应该如何应对?
KubeSphere简介,功能介绍,优势,架构说明及应用场景
帝国CMS仿核弹头H5小游戏模板/92game帝国CMS内核仿游戏网整站源码
大资本已开始逃离加密领域?
随机推荐
结构体小结
jMeter Thread group 对应的 constant timer
拒绝服务攻击DDoS介绍与防范
手撕SparkSQL五大JOIN的底层机制
3、IO流之字节流和字符流
二叉搜索树解决硬木问题
暴雨中的人
bracket matching
adb控制常用命令
后缀式的计算
MATLAB中readtimetable函数用法
【Programming Ideas】
顺序队列
使用百度EasyDL实现森林火灾预警识别
Win10 uwp use ScaleTransform magnify an element
3. Byte stream and character stream of IO stream
MySQL字段类型
adb shell input keyevent 模拟按键事件
简述@RequestParam与@RequestBody参数注解
2022-8-4 第七组 ptz 锁与线程池和工具类