关于 jwt 的一点问题

关于 jwt 的一点问题

1:一般使用 jwt 会添加 过期时间吧?
2:使用 jwt 添加过期时间后,怎么维护会话的的延续?
单体中httpsession 。session会话会保持30分钟,而且随着我们的请求,session会话会自动延长时间。
根据这个,一般使用 redis token 。 我们会定义一个过滤器之类的东西,拦截请求,对 Redis token的过期时间延长,这样维持我们的会话。

现在使用 jwt 如果在生成 的之后,我们设置了 过期时间 expiretime =30 分钟,那么意味着用户玩 30 分钟,就得重新登录,这个这个问题怎么解决 ??

我看网上的一些资料,说使用双 token的机制,再多定义一个 refreshToken。refreshToken 的有效期比较长。
比如 accessToken=30 分钟
refreshToken=60 分钟。
然后,后台进行校验的时候,如果 accessToken 过期了,此时校验 refreshToken。 如果 refreshToken 没有过期,那么就重新生成一个 accessToken 给前台,这样完成续签的作用。
老师,我没太理解这个机制,这样的话,59分钟的时候,来了一个请求,此时 accessToken 失效了,refreshToken 没有失效,此时重新生成了一个 accessToken 。
这样,也仅仅能够玩 60+30=90 分钟吧。
也仅仅是对时间做了一个延长,并没有做到类似于 Httpsession 那样可以不断的对会话延长吧。

还有就是使用 jwt+ 后端保存失效时间,感觉这种就更鸡肋了,后端做了工作,那还用什么jwt 啊,直接使用 redis token 不就完了。

不知道我的理解是否正确? 很纠结,希望老师给解答一下。

还有一个问题,使用jwt 的时候,在推出的时候,后端没有做任何处理,前端将其删除即可。我看网上有些人对这个也有异议:
这个 token如果在前端删除之前被其他人拿到,那么还是可以使用这个token 访问我们后台的接口,这样并不安全,好像说的也有道理哦 。 这个问题该怎么理解呢?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
风间影月 2023-08-14 18:10:53

对的,你说的没错,因为jwt是客户端token,是无状态的,是没有时间不好控制,如果去控制,那就是有状态,有很多公司都是这么做的,毫无意义。其实jwt是很多自媒体带节奏出来,这玩意比较适合的场景就是临时token,用完就不太会用了,比如网盘分享那种,有一定时间过了就没了。我们自己公司用的就是 redis token ,方便管理也好用,也更好控制,jwt知道原理就行,实际上生产我个人推荐用redis token

  • 对了,在不在群里?可以艾特一下我,或者拉你一下,😃
    2023-08-14 18:15:51
  • 提问者 YX_油腻 #2

    在的,星球001  哈哈

    2023-08-14 18:26:30
  • 风间影月 回复 提问者 YX_油腻 #3
    哈哈哈哈榜一大佬
    2023-08-14 18:27:00
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Java高级工程师
  • 参与学习       423    人
  • 解答问题       321    个

通过一个大型项目贯穿,掌握主流技术栈,提升技术广度与深度 实现复杂度极高的招聘业务,用户端+企业端+SaaS平台全覆盖 构建技术+业务+工程实战+就业服务闭环,实现从初中级到高级工程师的跨越!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师