当前位置:网站首页>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
边栏推荐
猜你喜欢
Zero-knowledge proof - zkSNARK proof system
动手学深度学习_NiN
[Teach you to use the serial port idle interrupt of the STM32HAL library]
[Data Mining] Written Exam Questions for Sohu Data Mining Engineers
27.降维
LINQ to SQL (Group By/Having/Count/Sum/Min/Max/Avg操作符)
mdk5.14无法烧录
用 Excel 爬取网络数据的四个小案例
Web3安全风险令人生畏,应该如何应对?
拒绝服务攻击DDoS介绍与防范
随机推荐
手撕SparkSQL五大JOIN的底层机制
经验分享|盘点企业进行知识管理时的困惑类型
香港暂停进口俄罗斯部分地区禽肉及禽类产品
动态规划_双数组字符串
【TypeScript】深入学习TypeScript枚举
ADB 安装 + 打驱动全教程
QT(42)-QT线程-线程调用槽函数
88.(cesium之家)cesium聚合图
简述@RequestParam与@RequestBody参数注解
web漏洞扫描器-awvs
【1403. 非递增顺序的最小子序列】
Matlab画图2
【PCBA方案设计】握力计方案
win10 uwp 使用 WinDbg 调试
Win10 uwp use ScaleTransform magnify an element
链栈的应用
路由中的meta、params传参的一些问题(可传不可传,为空,搭配,点击传递多次参数报错)
三种方式设置特定设备UWP XAML view
SAP ABAP OData 服务如何支持 $select 有选择性地仅读取部分模型字段值试读版
Configure laravel queue method using fort app manager