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过期的异常

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 3

你怎么不说token无限制的ttl啊,这样就都不用刷新了,岂不是更好。

5年前 评论

token 失效,可以使用refreshtoken 进行刷新,如果refreshtoken 都失效了,就需要重新授权了。
通讯中是使用token来作为通行证的,设置较短的ttl是为了安全(比如泄露等),这样就重新领取一张令牌(凭有效的refeshtoken),如果连重新领取的资格都没了(refreshtoken过期),就要重新鉴权了,重新验证身份获取token和refreshtoken。

5年前 评论

回答你的问题:
如果设置token为2周,refreshtoken为1小时。那我还捕捉什么异常啊。直接使用token两周后拉倒啊。refreshtoken就没有起到作用了。
比如:去某某重要基地,首先需要邀请函(身份授权),领取一个访客牌。把邀请函看做refreshtoken.访客牌看做是token.
然后规定邀请函24小时内生效,访客牌2小时生效。访客牌过期了,到前台凭邀请函重新领取一个访客牌。
这样相安无事,如果按照你的逻辑调过来。邀请函2小时有效,访客牌24小时有效,你还会自觉的使用邀请函
去重新换取访客牌吗?而且假如你的访客牌弄丢了,被别人捡到了,人家就可以冒用你的身份进行最多24小时的访问。
而如果是token是2小时有效,即使别别人获取到了,别人也最多冒用你的身份两小时。

5年前 评论

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