关于 Laravel jwt-auth 的几点疑问

jwt-auth,虽然可以进行用户认证并返回包含用户信息的token,但用户认证之后的会话保持或身份维护怎么做?比如说用户登录成功之后,会话保持30分钟,用户每进行一次操作,按正常的业务逻辑,系统都应该为用户自动延长30分钟。难道要每次刷新token返回新token吗,显然这不合理,也不符合jwt-auth的初衷。对于这种问题,大家怎么解决的?

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2
leo

由于过期时间是写在jwt的payload里的,所以目测不可能在不修改jwt字符串的情况下延长该token的有效期。正常情况下是提供一个refresh接口,网页端每隔一段时间调用refresh来刷新。

7年前 评论
liyu001989

或许是下面这样

token 有两个时间,一个是过期时间(ttl),一个是可刷新时间(refresh_ttl)。怎么理解,比如 ttl 是 1 天,refresh_ttl 是1周,那么 token 一天后过期,但是1周之内你仍然可以用这个 token 换取一个新的 token,而这个新 token 又会在 1 天后过期,1周内可刷新。

举个例子,用户登录了你的应用,并且每天都会打开你的应用,你的应用如果发现这个 token 过期了,会主动刷新一次,如果成功那么用户依然是登录的。当用户1周都没有登录过你的应用,那么他就需要重新登录了。

客户端的逻辑应该是,首先判断这个 token 是否过期了,1是通过两个 ttl 判断,因为客户端是知道这两个时间的,2是调用需要授权的接口返回的状态码(401),判断过期了则主动尝试刷新,刷新成功了,重置token和时间,失败了,则跳转到登录页面。
7年前 评论

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