当前位置:网站首页>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
边栏推荐
猜你喜欢

【数据挖掘】搜狐公司数据挖掘工程师笔试题

Five Minutes Introductory Text Processing Three Musketeers grep awk sed

使用堡塔应用管理器配置laravel队列方法

暴雨中的人

How to carry out AI business diagnosis and quickly identify growth points for cost reduction and efficiency improvement?

【Web漏洞探索】跨站脚本漏洞

QT(42)-QT线程-线程调用槽函数

DICOM医学影像协议

【2022杭电多校5 1012题 Buy Figurines】STL的运用

伺服电机矢量控制原理与仿真(1)控制系统的建立
随机推荐
数据仓库(1)什么是数据仓库,数仓有什么特点
Using Baidu EasyDL to realize forest fire early warning and identification
ADB 安装 + 打驱动全教程
数字IC设计中基本运算的粗略的延时估计
Win10 uwp use ScaleTransform magnify an element
KubeSphere简介,功能介绍,优势,架构说明及应用场景
QT(42)-QT线程-线程调用槽函数
How to make good use of builder mode
[Academic related] Tsinghua professor persuaded to quit his Ph.D.:I have seen too many doctoral students have mental breakdowns, mental imbalances, physical collapses, and nothing!...
香港暂停进口俄罗斯部分地区禽肉及禽类产品
Debug locally and start the local server in vs code
c语言小项目(三子棋游戏实现)
零知识证明笔记——私密交易,pederson,区间证明,所有权证明
Web3时代的战争
ts集成和使用
vs Code 运行一个本地WEB服务器
vs Code runs a local web server
[Data Mining] Written Exam Questions for Sohu Data Mining Engineers
Desthiobiotin-PEG4-Azide_脱硫生物素-叠氮化物 100mg
88. (the home of cesium) cesium polymerization figure