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

Oreo域名授权验证系统v1.0.6公益开源版本网站源码

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

伺服电机矢量控制原理与仿真(1)控制系统的建立

零知识证明笔记——私密交易,pederson,区间证明,所有权证明

使用百度EasyDL实现森林火灾预警识别

Configure laravel queue method using fort app manager

【debug】postgres数据存储错乱

88.(cesium之家)cesium聚合图

mdk5.14 cannot be burned

Tear down the underlying mechanism of the five JOINs of SparkSQL
随机推荐
文章复现:超分辨率网络-VDSR
手撕SparkSQL五大JOIN的底层机制
Spss-系统聚类手算实操
dotnet 启动 JIT 多核心编译提升启动性能
DSPE-PEG-Aldehyde,DSPE-PEG-CHO,磷脂-聚乙二醇-醛基一种疏水18碳磷脂
win10 uwp use WinDbg to debug
SAP ABAP OData 服务如何支持 $select 有选择性地仅读取部分模型字段值试读版
经验分享|盘点企业进行知识管理时的困惑类型
【手把手教你使用STM32HAL库的串口空闲中断】
88.(cesium之家)cesium聚合图
宝塔实测-搭建中小型民宿酒店管理源码
二叉搜索树解决硬木问题
jekyll 在博客添加流程图
【学术相关】清华教授发文劝退读博:我见过太多博士生精神崩溃、心态失衡、身体垮掉、一事无成!...
Debug locally and start the local server in vs code
明明加了唯一索引,为什么还是产生了重复数据?
基于单向链表结构的软件虚拟定时器的设计与构建
MySQL field type
proe和creo的区别有哪些
Using Baidu EasyDL to realize forest fire early warning and identification