当前位置:网站首页>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
边栏推荐
猜你喜欢
随机推荐
LayaBox---TypeScript---首次接触遇到的问题
adb shell input keyevent 模拟按键事件
二叉搜索树解决硬木问题
js的new Function()常用方法
Getting Started with Lattice Passwords
【学术相关】清华教授发文劝退读博:我见过太多博士生精神崩溃、心态失衡、身体垮掉、一事无成!...
LayaBox---知识点
Feign 与 OpenFeign
How to understand the crawler's Scrapy framework in the simplest and most popular way?
Debug locally and start the local server in vs code
面试官:Redis中过期的key是怎么被删除的?
【一起学Rust | 进阶篇 | Service Manager库】Rust专用跨平台服务管理库
js数据类型、节流/防抖、点击事件委派优化、过渡动画
【2022牛客多校5 A题 Don‘t Starve】DP
密码学系列之:PEM和PKCS7,PKCS8,PKCS12
PRIMAL: Pathfinding via Reinforcement and Imitation Multi-Agent Learning 代码解析
dotnet 通过 WMI 获取系统安装软件
dotnet 启动 JIT 多核心编译提升启动性能
顺序队列
Matlab画图2









