当前位置:网站首页>JWT主动校验Token是否过期
JWT主动校验Token是否过期
2022-08-04 17:18:00 【InfoQ】
JSON Web Token(简称 JWT)是目前最流行的跨域认证解决方案
在前后端分离开发时为什么需要用户认证呢?原因是由于HTTP 协定是不储存状态的(stateless),这意味着当我们透过帐号密码验证一个使用者时,当下一个 request 请求时它就把刚刚的资料忘了。于是我们的程序就不知道谁是谁,就要再验证一次。所以为了保证系统安全,我们就需要验证用户否处于登录状态。
JWT 组成
JWT 由三部分组成:Header,Payload,Signature 三个部分组成,并且最后由.拼接而成。

JWT 校验原理

通过前面讲解的 jwt 生成规则,jwt 前两部分是对 header 以及 payload 的 base64 编码。 当服务器收到客户端的 token 后,解析前两部分得到 header 以及 payload,并使用 header 中的算法与服务端本地私有 secret 进行签名,判断与 jwt 中携带的签名是否一致。
主动校验是否过期
在一些表单提交的业务场景会去校验Token是否有效,如果此时token已过期,那么前端会提示用户重新登录。如
开源字节
租房小程序提交房源的场景就是如此。该操作模式会导致用户输入的数据丢失,造成用户体验很糟糕,因此在租房小程序中我们实现了主动校验token的功能,在我们打开表单的同时就去校验token,此时用户并没有输入任何数据。通过此方式改善了用户的体验。
/**
* 验证令牌是否过期
*/
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;
}
/**
* 从令牌中获取数据声明
*
* @param token 令牌
* @return 数据声明
*/
private Claims parseToken(String token)
{
return Jwts.parser()
.setSigningKey(secret)
.parseClaimsJws(token)
.getBody();
}
以上分享内容在
开源字节低代码平台
中可免费获取,前往围观
如若转载,请注明出处:开源字节 https://sourcebyte.cn/article/212.html
边栏推荐
- 要有遥不可及的梦想,也要有脚踏实地的本事
- R语言ggplot2可视化:使用ggpubr包的ggbarplot函数可视化柱状图、color参数指定柱状图的边框的色彩
- 通关剑指 Offer——剑指 Offer II 010. 和为 k 的子数组
- R语言缺失时间序列的填充及合并:补齐时间序列数据中所有缺失的时间索引、使用merge函数合并日期补齐之后的时间序列数据和另外一个时间序列数据(补齐左侧数据)
- 面试官:可以谈谈乐观锁和悲观锁吗
- NLP未来,路在何方?从学术前沿和业界热点谈起
- 从云计算到函数计算
- 化学制品制造业数智化供应链管理系统:打造智慧供应体系,赋能企业产效提升
- 【日记】高并发下的DB分库分表分区策略
- IDEA以多端口启动同一个服务项目
猜你喜欢
随机推荐
小程序+自定义插件的混合模式
Learning and Exploration-Introducing Baidu Statistics to the Website
taro 滚动组件ScrollView
适配器模式
JS中null与undefined的异同点
要有遥不可及的梦想,也要有脚踏实地的本事
Selenium Webdriver驱动自管理
R语言dplyr包group_by函数和summarise_at函数计算dataframe计算不同分组的计数个数和均值、使用%>%符号将多个函数串起来
字节二面被问到mysql事务与锁问题,我蚌埠住了
基于clipboard.js对复制组件的封装
【图像分类】2021-DeiT
全世界国家和地区国家顶级域名对照表
树莓派通过API向企业微信推送图文
我的大一.
R语言ggpubr包的ggtexttable函数可视化表格数据(直接绘制表格图或者在图像中添加表格数据)、使用ggarrange函数将表格数据和可视化图像组合起来(表格数据在可视化图像下方)
R语言glm函数使用频数数据构建二分类logistic回归模型,分析的输入数据为频数数据(多个分类指标对应的阴性样本和阳性样本的频数数据)、weights参数指定频数值
正则过滤字符串中 script 标签
Compose 类型稳定性注解:@Stable & @Immutable
Unity Apple登录接入
【日记】UPNP功能会允许自动给光猫追加端口映射









