不要盲目使用新技术,说的就是你,JWT!(1)

在我看来
除非你是真的知道新技术到底解决了怎样的问题
除非你很清楚新技术有什么优点和缺点
或者至少你要知道新技术是用于什么场景的
你再用新技术也不迟,否则,就慢慢填坑!
否则,就是为了时髦买了条带洞的内裤却发现洞的位置不对还得再买一条正常的内裤!

JWT,拉出来当典型

为了避免被喷成筛子,三连划重点

JWT本身没有错!
JWT本身没有错!
JWT本身没有错!

无状态没有错!
无状态没有错!
无状态没有错!

我们聊的JWT对标的是 Session ,不是 Cookie
我们聊的JWT对标的是 Session ,不是 Cookie
我们聊的JWT对标的是 Session ,不是 Cookie

错的是什么?是盲目使用
在座各位有多少人能准确回答出上一节的三个问题?

  1. 你真的知道JWT到底解决了怎样的问题?
  2. 你很清楚JWT有什么优点和缺点?
  3. 你知道JWT是用于什么场景的?

给自己一个靠谱的答案,你为什么要用JWT?
我百度谷歌搜索了一下,发现用 JWT 的文章真的是少数,用 Identity 和 Session 的文章很多,这超出了我的预料
为什么身边的项目包括群友公司的项目全是 JWT?

JWT 与登录

JWT 的核心是无状态、自验证、无中央服务器,有超时时间等机制,我们所实现的登录功能,本质上是一个状态保持的机制,要保持,就会有断开的需求,JWT 能实现断开吗?不能。
JWT 的核心应用场景根本不是状态保持!
https://www.baidu.com/s?wd=jwt会话保持&rsv_spt=1&rsv_iqid=0x9d65b70000004423&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_dl=tb&rsv_sug3=11&rsv_sug1=10&rsv_sug7=100&sug=jwt%E4%BC%9A%E8%AF%9D%E4%BF%9D%E6%8C%81%20%E5%88%B7%E6%96%B0&rsv_n=1&rsv_t=576d%2BK65G9Uk60klbPpQEAyfnAnSKdDcE476BRPqSajtXpQkE0rXpLQDtHtdE8AvX51v&rsv_sug2=0&rsv_btype=i&inputT=4864&rsv_sug4=4864

百度早已有了不要用JWT做状态保持的文章,这根本就不是一回事!

JWT 的核心在于不需要中央服务器的验证,它可没说验证状态要保持啊。是的,超时时间的机制确实很像状态保持,但是因为 JWT 无状态的特性,它难以实现状态保持的完整功能。
比如说,我想续期,怎么办?

有的同学说了,旧KEY作废发个新KEY,作废的KEY保存在内存当中

你这和“我为了潮流买了个有洞的内裤结果发现外面还得再套一个内裤才不冷”有啥区别呢?
没错,这位同学的方案就是大家的方案,可是,这么明显的问题(不是JWT的问题),你为什么还要坚持JWT?
坚持JWT的重点就是无状态,然而作废的KEY保存在内存中不就又回到了有状态吗?你为什么还要坚持JWT?

大哥们推荐JWT的理由

我所知道的理由如下。无状态这条就不用说了:

  1. 不走 Cookie,移动端没有 Cookie
  2. 比 Cookie 更安全,CSRF攻击

这两条都有一个相同的问题,不用 JWT 就非得用 Cookie?
JWT 对标的解决方案是 Session,不是 Cookie
有人说 Session 就是基于 Cookie 的。
那么,Cookie 是基于什么的?基于 HTTP 头的
JWT呢?不还是 HTTP 头吗?
都是从头里读的,我改一下不从 Cookie 字段读不就行了?
有人又说,这不麻烦啊,现成的JWT方案很多,拿过来就用。
那么,出问题的时候你是加班到十点还是第二天第一个人打卡?
再者,Session 不见得没有方案,老外那帮人天天可是闲得慌。

JWT 的应用场景

这么说,JWT是。。。。废物?
哎别喷我啊你看完再喷呀。。。。。

我一直在找 JWT 的应用场景,但是除了三高(高并发、大数据、高可用)场景之外,我是真没找到合适的。。。
但是谷歌还是有大神,有位大神表示下面这个场景适用于 JWT

邮箱链接验证
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后总结

ActiveMQ+Kafka+RabbitMQ学习笔记PDF

image.png

  • RabbitMQ实战指南

image.png

  • 手写RocketMQ笔记

image.png

  • 手写“Kafka笔记”

image

关于分布式,限流+缓存+缓存,这三大技术(包含:ZooKeeper+Nginx+MongoDB+memcached+Redis+ActiveMQ+Kafka+RabbitMQ)等等。这些相关的面试也好,还有手写以及学习的笔记PDF,都是啃透分布式技术必不可少的宝藏。以上的每一个专题每一个小分类都有相关的介绍,并且小编也已经将其整理成PDF啦
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值