批斗下JWT
前面老板叫我看一下我们的一个app的登录有效期是多久,就不由得想到这个。这个app第一版是用的JWT来管理的登录token,所以就一直延续到现在,屎坑吧。
我对J字头的东西一直怀着深深的恶意,这个J和那个J虽然不是一个意思,但也很有渊源。改天我专门来讨论J的事。
网上已经有不少人批判过JWT了,不过大多有点故作高深,意思是对的,但看起来吃力,我用最简单的话来说。
JWT号称的最大最主要的优点就是,token由客户端管理,不需要占用服务器存储资源。 额。。这个系统架构谁设计的?多一个登录token都要拿出来说事,这系统的计算和储存容量是少得有多可怕?真是打算1C1G来做大气计算地震预测和原爆模拟么?事实上,从来没人担心系统压力大(别拿12306什么说事啦,咱们到不了那个层次),我们担心的是没生意没压力,压力来了,加机器提性能,老板这个钱掏得不要太开心。
上面一点先不议,再说它的不占用系统存储资源,是的,JWT本体确实不占用,然而,token就永远不过期?永远不能注销?允许无穷多点登录?不能修改权限等等? 所以啦,必须再建一个吊销表等,就是需要吊销的token放在表里面,这。。。这不就要存储了吗?JWT的无状态优点何在? 大聪明马上就会说,我会用redis啦,redis+jwt,头孢加酒,棒棒哒。 你都redis了,那session它不香吗?至于再复杂化一个JWT出来?
还有啥JWT支持SSO什么的我就不想说了,上面两点都已经涵括它了。
所以,在用户登录一块,它就是一个妥妥的垃圾。 至于帮它洗的一些应用场景,比如两台服务器间的临时对话的认证。。这个,用IP认证它不香吗?至于捧JWT这臭脚么?