其实我更想聊标题的前半部分,后半部分只是拉出来做典型的。

简历上写上一句,“热衷于学习新技术”,孬管是不是真的,至少加分项是可以有的。

再看看标题,我是来搞笑的?

学习与使用,两回事

学习侧重于新技术的HOW、WHAT、Where(其实实际过程中很多时候后两个是忽略的)

使用侧重于。。。。。填坑!

开始我们的主题

标题写的,为什么?

在我看来

除非你是真的知道新技术到底解决了怎样的问题

除非你很清楚新技术有什么优点和缺点

或者至少你要知道新技术是用于什么场景的

你再用新技术也不迟,否则,就慢慢填坑!

否则,就是为了时髦买了条带洞的内裤却发现洞的位置不对还得再买一条正常的内裤!

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

邮箱链接验证

这功能大家都知道,向用户邮箱发个链接,要求这个链接在5分钟之内点击来验证邮箱有效性,这个场景用 JWT 再适合不过了,量身定作的。

其他的,我是真不知道有啥场景。

不要再一切皆 JWT了

JWT 本身没有错,错在所有的项目全是 JWT。

JWT 场景之一是用于解决用户量并发量较大时,中央服务器无法及时响应请求的问题,Redis 在数据量达到一定程度后,QPS会大幅度降低,可是,这个量级是多少?至少几百万起步吧,我没试过。

各位看官你先把你的项目的日活用户量搞到几百万再说好不好,日活几百万距离几百万并发还差得远呢。

不要盲目使用新技术,说的就是你,JWT!的更多相关文章

  1. 006_饿了么大前端总监sofish帮你理清前端工程师及大前端团队的成长问题!

    作者|Sofish编辑|小智 & 尾尾本文是前端之巅向 sofish 的约稿<什么样的人可以称为架构师?>.采访< 饿了么大前端团队究竟是如何落地和管理的?>以及 so ...

  2. BAT解密:互联网技术发展之路(5)- 开发层技术剖析

    BAT解密:互联网技术发展之路(5)- 开发层技术剖析 1. 开发框架 在系列文章的第2篇"BAT解密:互联网技术发展之路(2)- 业务怎样驱动技术发展"中我们深入分析了互联网业务 ...

  3. 解密国内BAT等大厂前端技术体系-美团点评之下篇(长文建议收藏)

    引言 在上篇中,我已经介绍了美团点评的业务情况.大前端的技术体系,其中大前端的技术全景图如下: 上篇重点介绍了工程化和代码质量的部分,工程化涵盖了客户端持续集成平台-MCI.全端监控平台-CAT.移动 ...

  4. 【免费开源】基于Vue和Quasar的crudapi前端SPA项目实战—环境搭建 (一)

    背景介绍和环境搭建 背景 crudapi增删改查接口系统的后台Java API服务已经全部可用,需要一套后台管理UI,主要用户为开发人员或者对计算机有一定了解的工作人员,通过UI配置元数据和处理业务数 ...

  5. 在Django中使用zerorpc

    在Django中使用zerorpc 前言 随着系统架构从集中式单点服务器到分布式微服务方向的迁移,RPC是一个不可回避的话题.如何在系统中引入对开发者友好,性能可靠的RPC服务是一个值得深思的问题. ...

  6. 基于APNs最新HTTP/2接口实现iOS的高性能消息推送(服务端篇)

    1.前言 本文要分享的消息推送指的是当iOS端APP被关闭或者处于后台时,还能收到消息/信息/指令的能力. 这种在APP处于后台或关闭情况下的消息推送能力,通常在以下场景下非常有用: 1)IM即时通讯 ...

  7. 新技术≠颠覆:CIO 要有战略耐心

    新技术≠颠覆:CIO 要有战略耐心 大数据,云时代,互联网思维, 物联网--最近一两年,这些字眼一次次地出现在各种大大小小的CIO会议上和他们的私下交流圈子里,作为对新技术最敏感的人群,一方面他们迫切 ...

  8. 新思想、新技术、新架构——更好更快的开发现代ASP.NET应用程序

    在博客园学习很长时间了,今天终于自己也开通了博客,准备分享一些感悟和经验.首先感谢博客园园主提供了这么好的程序员学习交流平台,也非常感谢张善友.dax.net.netfocus.司徒正美 等技术大牛的 ...

  9. 华为5G空口新技术(2015年)

    2015-03-24 长江后浪推前浪,4G建设方兴未艾,业界关于5G的讨论已如火如荼.对于每一代移动通信,空口技术都相当于王冠上的明珠. 在月初的世界移动通信大会上,华为发布了面向5G的新空口,并展出 ...

随机推荐

  1. C/C++编程笔记:C语言进制详解,二进制、八进制和十六进制!

    我们平时使用的数字都是由 0~9 共十个数字组成的,例如 1.9.10.297.952 等,一个数字最多能表示九,如果要表示十.十一.二十九.一百等,就需要多个数字组合起来. 例如表示 5+8 的结果 ...

  2. Error: Cannot perform an interactive login from a non TTY device

    zhangjiawen@zhangjiawen-PC MINGW64 /d/Docker Toolbox$ docker login --username=绝世随机变量 registry.cn-han ...

  3. nvidia-smi:控制您的GPU

    翻译  https://www.microway.com/hpc-tech-tips/nvidia-smi_control-your-gpus/ 大多数用户知道如何检查其CPU的状态,查看多少系统内存 ...

  4. JavaScript动画实例:炸开的小球

    1.炸开的小球 定义一个小球对象类Ball,它有6个属性:圆心坐标(x,y).小球半径radius.填充颜色color.圆心坐标水平方向的变化量speedX.圆心坐标垂直方向的变化量speedY. B ...

  5. 朴素贝叶斯分类器基本代码 && n折交叉优化

    自己也是刚刚入门.. 没脸把自己的代码放上去,先用别人的. 加上自己的解析,挺全面的,希望有用. import re import pandas as pd import numpy as np fr ...

  6. tableauRFM分析

    1.数据源 2.创建相关字段 2.1 购买点会员生命期 2.2 会员最后购买时间 2.3 最后购买点生命期 3.近一个月老客户的生命期情况 排除了当天创建当天购买的情况,可以看到超市的大部分用户是两年 ...

  7. C#LeetCode刷题之#225-用队列实现栈(Implement Stack using Queues)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4106 访问. 使用队列实现栈的下列操作: push(x) -- ...

  8. C#LeetCode刷题之#234-回文链表(Palindrome Linked List)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3905 访问. 请判断一个链表是否为回文链表. 输入: 1-> ...

  9. Pandas和常见数据处理小模块

    文章目录 前言 Pandas部分 根据某一列找另一列 根据条件变换每一列 按照标签保存为DataFrame 数据处理 切分数据集和测试集 其他 计时 前言 pandas 确实很好用, 但是网上的教程参 ...

  10. 题解 BZOJ4709

    题目描述 一道简单DP优化调了好久qwq 首先分析题目,发现每次从一边取贝壳是完全没用的,此题本质就是将区间分成数个区间,使区间价值和最大. 可以发现一个性质,那就是最优解的每个区间的两端点一定相同且 ...