当前位置:网站首页>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
边栏推荐
猜你喜欢
[Data Mining] Written Exam Questions for Sohu Data Mining Engineers
【debug】postgres数据存储错乱
动手学深度学习_NiN
【一起学Rust | 进阶篇 | Service Manager库】Rust专用跨平台服务管理库
五分钟入门文本处理三剑客grep awk sed
How to understand the crawler's Scrapy framework in the simplest and most popular way?
ADB 安装 + 打驱动全教程
PowerCLi 批量配置NTP
mdk5.14无法烧录
Retrofit的使用及原理详解
随机推荐
PowerCLi 批量配置NTP
漫画 | 老板裁掉我两周后,又把我请回去,工资翻番!
Matlab画图2
简述@RequestParam与@RequestBody参数注解
js数据类型、节流/防抖、点击事件委派优化、过渡动画
LayaBox---TypeScript---举例
【debug】postgres数据存储错乱
web漏洞扫描器-awvs
Zero-knowledge proof - zkSNARK proof system
bracket matching
[2022 Hangzhou Electric Multi-School 5 1003 Slipper] Multiple Super Source Points + Shortest Path
MySQL stored procedure introduction, creation, case, delete, view "recommended collection"
Tear down the underlying mechanism of the five JOINs of SparkSQL
mdk5.14 cannot be burned
Configure laravel queue method using fort app manager
xss课堂内容复现
[Teach you to use the serial port idle interrupt of the STM32HAL library]
C语言知识大全(一)——C语言概述,数据类型
adb控制常用命令
STP基本配置及802.1D生成树协议的改进