当前位置:网站首页>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
边栏推荐
- After encountering MapStruct, the conversion between PO, DTO and VO objects is no longer handwritten
- QT(41)-多线程-QTThread-同步QSemaphore-互斥QMutex
- 【Web漏洞探索】跨站脚本漏洞
- C#之app.config、exe.config和vshost.exe.config作用区别
- dotnet 通过 WMI 获取系统安装软件
- jMeter Thread group 对应的 constant timer
- 关于 SAP 电商云 Spartacus UI SSR 的 state transfer 问题
- c语言小项目(三子棋游戏实现)
- 新式茶饮,卷完水果还能卷什么?
- KubeSphere简介,功能介绍,优势,架构说明及应用场景
猜你喜欢

手撕SparkSQL五大JOIN的底层机制

3. Byte stream and character stream of IO stream

CAS :80750-24-9(脱硫生物素 NHS 酯)

Interviewer: How is the expired key in Redis deleted?

数字IC设计中基本运算的粗略的延时估计
【一起学Rust | 进阶篇 | Service Manager库】Rust专用跨平台服务管理库

ts集成和使用

知识分享|如何设计有效的帮助中心,不妨来看看以下几点

mdk5.14无法烧录
![[2022 Hangzhou Electric Power Multi-School 5 1012 Questions Buy Figurines] Application of STL](/img/fe/1dd9418800366ee25067e154936e3b.png)
[2022 Hangzhou Electric Power Multi-School 5 1012 Questions Buy Figurines] Application of STL
随机推荐
格密码入门
How to make good use of builder mode
Retrofit的使用及原理详解
Red5搭建直播平台
Apache服务器的配置[通俗易懂]
搭建MyCat2双主双从的MySQL读写分离
Getting Started with Lattice Passwords
【学术相关】清华教授发文劝退读博:我见过太多博士生精神崩溃、心态失衡、身体垮掉、一事无成!...
matlab 画图
QT(41)-多线程-QTThread-同步QSemaphore-互斥QMutex
Interviewer: How is the expired key in Redis deleted?
win10 uwp 修改图片质量压缩图片
Web3安全风险令人生畏,应该如何应对?
嵌入式分享合集28
win10 uwp 使用 WinDbg 调试
多商户商城系统功能拆解22讲-平台端分销商品
SAP ABAP OData 服务如何支持 $select 有选择性地仅读取部分模型字段值试读版
[21天学习挑战赛——内核笔记](二)——设备树基础
明明加了唯一索引,为什么还是产生了重复数据?
拒绝服务攻击DDoS介绍与防范