JWT本身没有错!
JWT本身没有错!
JWT本身没有错!
无状态没有错!
无状态没有错!
无状态没有错!
我们聊的JWT对标的是 Session ,不是 Cookie
我们聊的JWT对标的是 Session ,不是 Cookie
我们聊的JWT对标的是 Session ,不是 Cookie
错的是什么?是盲目使用
在座各位有多少人能准确回答出上一节的三个问题?
-
你真的知道JWT到底解决了怎样的问题?
-
你很清楚JWT有什么优点和缺点?
-
你知道JWT是用于什么场景的?
给自己一个靠谱的答案,你为什么要用JWT?
我百度谷歌搜索了一下,发现用 JWT 的文章真的是少数,用 Identity 和 Session 的文章很多,这超出了我的预料
为什么身边的项目包括群友公司的项目全是 JWT?
JWT 的核心是无状态、自验证、无中央服务器,有超时时间等机制,我们所实现的登录功能,本质上是一个状态保持的机制,要保持,就会有断开的需求,JWT 能实现断开吗?不能。
JWT 的核心应用场景根本不是状态保持!
百度早已有了不要用JWT做状态保持的文章,这根本就不是一回事!
JWT 的核心在于不需要中央服务器的验证,它可没说验证状态要保持啊。是的,超时时间的机制确实很像状态保持,但是因为 JWT 无状态的特性,它难以实现状态保持的完整功能。
比如说,我想续期,怎么办?
有的同学说了,旧KEY作废发个新KEY,作废的KEY保存在内存当中
你这和“我为了潮流买了个有洞的内裤结果发现外面还得再套一个内裤才不冷”有啥区别呢?
没错,这位同学的方案就是大家的方案,可是,这么明显的问题(不是JWT的问题),你为什么还要坚持JWT?
坚持JWT的重点就是无状态,然而作废的KEY保存在内存中不就又回到了有状态吗?你为什么还要坚持JWT?
我所知道的理由如下。无状态这条就不用说了:
-
不走 Cookie,移动端没有 Cookie
-
比 Cookie 更安全,CSRF攻击
这两条都有一个相同的问题,不用 JWT 就非得用 Cookie?
JWT 对标的解决方案是 Session,不是 Cookie
有人说 Session 就是基于 Cookie 的。
那么,Cookie 是基于什么的?基于 HTTP 头的
JWT呢?不还是 HTTP 头吗?
都是从头里读的,我改一下不从 Cookie 字段读不就行了?
有人又说,这不麻烦啊,现成的JWT方案很多,拿过来就用。
那么,出问题的时候你是加班到十点还是第二天第一个人打卡?
再者,Session 不见得没有方案,老外那帮人天天可是闲得慌。
这么说,JWT是。。。。废物?
哎别喷我啊你看完再喷呀。。。。。
我一直在找 JWT 的应用场景,但是除了三高(高并发、大数据、高可用)场景之外,我是真没找到合适的。。。
但是谷歌还是有大神,有位大神表示下面这个场景适用于 JWT
邮箱链接验证
这功能大家都知道,向用户邮箱发个链接,要求这个链接在5分钟之内点击来验证邮箱有效性,这个场景用 JWT 再适合不过了,量身定作的。
其他的,我是真不知道有啥场景。
JWT 本身没有错,错在所有的项目全是 JWT。
JWT 场景之一是用于解决用户量并发量较大时,中央服务器无法及时响应请求的问题,Redis 在数据量达到一定程度后,QPS会大幅度降低,可是,这个量级是多少?至少几百万起步吧,我没试过。
各位看官你先把你的项目的日活用户量搞到几百万再说好不好,日活几百万距离几百万并发还差得远呢。
最后
最后:
总结来说,面试成功=基础知识+项目经验+表达技巧+运气。我们无法控制运气,但是我们可以在别的地方花更多时间,每个环节都提前做好准备。
面试一方面是为了找到工作,升职加薪,另一方面也是对于自我能力的考察。能够面试成功不仅仅是来自面试前的临时抱佛脚,更重要的是在平时学习和工作中不断积累和坚持,把每个知识点、每一次项目开发、每次遇到的难点知识,做好积累,实践和总结。