laravel如何用JWT更新token的过期时间?

情况是这样的我用JWT生成token,过期时间是3天,然后我想能不能快过期的时候给这个token的过期时间延长呢,这个token的值不变但是里面的过期时间延长能不能做到的?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
最佳答案

可以脑袋放活泛一些,在token外的缓存层套一个延长时间,缓存key就是token,值就是时间。然后改中间件

2个月前 评论
donggan (楼主) 2个月前
wdnmd (作者) 2个月前
讨论数量: 17

保持token值不变的情况下延长时间,想啥呢?先去了解下JWT是啥东西,之后再去思考你说的这个场景,用它合适不合适。

2个月前 评论
donggan (楼主) 2个月前
boolstone 2个月前
CTdream 2个月前

一般的做法是,有一个 refresh-token 的接口(用当前 token 置换新的 token)

2个月前 评论

JWT的本质就是明文数据加签名,防止篡改用的,保存在客户端。改时间说明数据改了,改了签名就肯定不一样了,所以是不可以的。做个刷新令牌的机制即可,一换一

2个月前 评论

可以脑袋放活泛一些,在token外的缓存层套一个延长时间,缓存key就是token,值就是时间。然后改中间件

2个月前 评论
donggan (楼主) 2个月前
wdnmd (作者) 2个月前

为啥不用长短token?

2个月前 评论

搞个refresh_token 接口,要么就不用jwt,自己生成个token,想怎么延长都行 :joy:

2个月前 评论

那你为什么不给一个永久有效的token,或者直接把token的生存时间调大

2个月前 评论

参看下 laravel 的 用户认证,他的token 默认生存时间就是一年

2个月前 评论

你就把token的有效期搞成10年,然后把token存在redis,给redis一个缓存时间,校验的时候,校验一下redis的缓存时间,快到期了重新设置redis的过期时间;不过这样属于jwt滥用了

2个月前 评论

需求不合理,但是不合理的需求也有实现方式。楼上的方式就可以实现,时间可以短一些,然后加个token黑名单。

2个月前 评论

写个刷新接口就行了 至于 refresh_token 有没有都可以的,看你自己怎么设计了,刷新接口就是传入旧的token。然后返回一个新的token,前端可以根据token的到期时间实现无感刷新

2个月前 评论

强行套用jwt就是这样

1个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!