当前位置:网站首页>JWT actively checks whether the Token has expired
JWT actively checks whether the Token has expired
2022-08-04 21:08:00 【Jen Sir (Open Source Byte)】
JSON Web Token (JWT for short) is currently the most popular cross-domain authentication solution
Why do I need user authentication when the front-end and back-end are separated for development?The reason is that the HTTP protocol is stateless, which means that when we authenticate a user with an account and password, it will forget the previous data when the next request is made.So our program doesn't know who is who, and we have to verify it again.So in order to ensure system security, we need to verify whether the user is logged in.
JWT composition
JWT consists of three parts: Header, Payload, Signature, and finally spliced by .

JWT verification principle

Through the jwt generation rules explained earlier, the first two parts of jwt are the base64 encoding of the header and payload.When the server receives the token from the client, it parses the first two parts to get the header and payload, and uses the algorithm in the header to sign with the server's local private secret to determine whether it is consistent with the signature carried in jwt.
Active verification is expired
In some business scenarios of form submission, it will check whether the token is valid. If the token has expired at this time, the front end will prompt the user to log in again.For example, the Open Source Byte rental applet submits housing listings.This operation mode will cause the data input by the user to be lost, resulting in a very bad user experience. Therefore, in the rental applet, we have implemented the function of actively verifying the token. When we open the form, we will verify the token. At this time, the user does notEnter any data.In this way, the user's experience is improved.
/*** Verify that the token has expired*/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;}/*** Get data claim from token** @param token token* @return data declaration*/private Claims parseToken(String token){return Jwts.parser().setSigningKey(secret).parseClaimsJws(token).getBody();}The above shared content is free in Open Source Byte Low Code PlatformGet, go to the crowd
If reprinted, please indicate the source: Open Source Byte https://sourcebyte.cn/article/212.html
边栏推荐
猜你喜欢

QT(41)-多线程-QTThread-同步QSemaphore-互斥QMutex

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

面试官:Redis中过期的key是怎么被删除的?

3. Byte stream and character stream of IO stream

c语言小项目(三子棋游戏实现)

SAP ABAP OData 服务如何支持 $select 有选择性地仅读取部分模型字段值试读版

Retrofit的使用及原理详解
![[TypeScript] In-depth study of TypeScript enumeration](/img/27/4836e59528bb5a51ffc1cf9961c6b6.png)
[TypeScript] In-depth study of TypeScript enumeration

MATLAB中readtimetable函数用法

【C语言】指针和数组的深入理解(第三期)
随机推荐
Feign 与 OpenFeign
拼多多开放平台订单信息查询接口【pdd.order.basic.list.get订单基础信息列表查询接口(根据成交时间)】代码对接教程
面试官:Redis中过期的key是怎么被删除的?
无代码平台字段设置:基础设置入门教程
【数据挖掘】搜狐公司数据挖掘工程师笔试题
adb控制常用命令
【编程思想】
Retrofit的使用及原理详解
【1403. 非递增顺序的最小子序列】
[2022 Nioke Duo School 5 A Question Don't Starve] DP
MySQL field type
密码学系列之:PEM和PKCS7,PKCS8,PKCS12
【debug】postgres数据存储错乱
模拟对抗之红队免杀开发实践
1、File对象学习
web漏洞扫描器-awvs
Zero-knowledge proof notes - private transaction, pederson, interval proof, proof of ownership
LayaBox---TypeScript---结构
2022-8-4 第七组 ptz 锁与线程池和工具类
【2022牛客多校5 A题 Don‘t Starve】DP