JWT 如何像 Session 一样延长时间?

使用 https://github.com/tymondesigns/jwt-auth 这个包
我将JWT的 ttl 和 refresh_ttl 分别设置成 1小时和24小时
使用一个middleware 来处理 token, 如果遇到过期 则进行刷新. 直到超出refresh_ttl

这样做的话. 有个问题. 如果有用户在最后一小时进行操作的话. 或者更极端的最后一秒还有在线的行为, 那么后一秒因为超出refresh_ttl 以及 ttl过期 而导致需要重新登录

jwt-auth包能否做到像session一样. 自动延长过期时间?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 5
leo

refresh token就是设计来做这个事情的啊

6年前 评论

@leo refresh ttl 只能做到在此限定时间内 允许刷新TOKEN. 还是会存在 最后一秒哪怕用户活跃 还是会发生过期的行为
它不能像Session一样 延长生命周期.

6年前 评论

我想知道JWT能否做到像session一样. 如果N时间是用户最后一次活跃时间点. 那么N+5则是过期时间.
而不是目前这种, 限定了ttl 和 refresh_ttl 后, 无论期间用户是否有持续的交互 只要超过了 token时效, 并且refresh_ttl也超出了最后的限期 就无法为token延时

6年前 评论
leo

JWT的过期时间编码在token里的,所以不可能在不改变token的情况下修改过期时间。

通常的解决方案是每次用户请求都通过cookie返回新的token

6年前 评论

我深有体会,ipad端斗鱼一年都不过期,熊猫每星期登录一次。用户每次登录颁发一次token, ttl 和 refresh_ttl 分别设置成 1小时和999999小时。反正token谁都都可以看到数据

5年前 评论

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