jwt的token自动续约_JWT Token 刷新和作废

本文探讨了JWT Token在用户登录状态维护中的自动续约和作废问题。针对登录后7天免登、30天无访问需重新登录的需求,分析了更新Payload、定时更新、使用Cache、refreshToken等方案的优缺点。推荐的方案是在Token过期一定时间内允许用旧Token换取新Token。同时,介绍了Token作废的方法,包括Cache、用户关联表和黑名单,并强调了在不考虑作废时的安全防护措施。最后指出JWT适用于一次性验证,是否使用取决于具体需求。
摘要由CSDN通过智能技术生成

之前一篇文章简单介绍了下JWT的用法,涉及到token的签发和验证。有人说JWT不适合用于替换传统的 session+cookies 机制用于Web应用的用户登录状态维护,很大原因就是这块问题。

虽然之前的案例里面,我们可以成功在登录后获取一个Token,然后访问服务器的时候带着这个Token,服务器就可以知道当前访问的用户Uid了,假设现在有一下需求:登录后7天不用重复登录

超过30天没有访问网站则需重新登录,否则一直有效

修改密码功能

Token续签问题

对于第一个问题,我们可以在jwt的 Payload 里面设置一个过期时间,比如说7天,超过这个时间Token无效。但是如果只是简单的这么做的话就会带来另一个问题: 假如一个用户正在访问网站,突然Token失效了,用户就会掉登录,体验太差。

所以,大部分时候我们都是采用第二种策略: 超过xx天不访问网站则需要重新登录,如果中间连续访问网站的话则不要重新登录,对于很多手机App,我们可不希望用户天天输账号密码登录,但如果永久有效可能会带来一些安全问题。

这其实就是Token的续签问题,我们看一下网上提到的一些解决方案:

1.更新Payload里面的过期时间。

JWT的Payload里面可以设置一个过期时间,我们可以在用户每次访问的时候把这个过期时间更新一下。由于JWT的secret加密机制,只要exp变了,整个Token就变了,所以这种机制相当于每次重新颁发了一个新的Token。

这种方案简单粗暴,存在性能问题&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值