Laravel jwt 的参数设置逻辑貌似有点小问题
jwt 中定义了 token 的有效时间 ttl(官方默认是 1 个小时),token 的有效刷新时间 refresh_ttl(官方默认是 2 周),假如现在生成某个 token,那么:
一个小时内 : token 可以正常使用
一个小时外,两周内: 解析 token 会抛出异常 token 过期,需要人为捕获异常再去刷新 token(即重新生成 token)返回
两周外 : 解析 token 抛出异常 token 过期,捕获异常去刷新 token 抛出无法刷新异常。
从上可知,
token 的有效时间 ttl < tokentoken 的有效刷新时间 refresh_ttl,
刷新前提是捕获解析 token 时抛出的过期异常。
为什么不反过来这么设置:
token 的有效时间 ttl > tokentoken 的有效刷新时间 refresh_ttl,
即设置 ttl 为 2 周,refresh_ttl 为 1 个小时,那么:
一个小时内 : token 可以正常使用
一个小时外,两周内:解析 token 时,token 没有过期,但是需要刷新,并返回刷新后的 token
两周外:解析 token 时,抛出 token 过期的异常
推荐文章: