JWT认证阐述
脚本后续更新及迭代将由kkitDeploy项目代替
https://github.com/luckman666/kkitdeploy_server
请大家持续关注kkitDeploy
哥发达了,是时候实现一下儿时的梦想了,怡红院开起!

店面门脸装修如何?做生意,谁还没个镇店之宝啊?有请我的店长如花小姐!

没事哈!别怕,扭曲的五官往往都藏着一颗纯洁的心灵。
不管如何吧,我的怡红院算是开起来了。
附近各大有名的英俊才子,达官贵人,地痞流氓啥的蜂拥而至。火爆异常,由于我没有开店经验。过大的客流导致了一个问题。

“”哎呀老板呀!你是有所不知道呀!咱们店那可是贵宾旗舰店。那能让人随便进呀?所以要对每一个顾客进行登记,留存他们的信息,这样才能在他们进了咱们店之后,根据他们留的信息找到他们。所以大家都得排队登记哦!“
“哪不对呀,我看王公子刚才不是已经登记过了嘛?咋又跑前台去了?”
如花回到:“王公子,刚才出去了一趟,在出去的时候我们给了他一个临时暗号,他再进来的时候呢需要到前台报暗号,然后我们根据暗号翻账本找他的信息。所以他还得去前台核实身份信息!”
“what?老子开店是让顾客消费的,而你们却让顾客来回登记玩?赶紧给我想办法解决这个问题。”
这时,店内的一个新来的小职员说了:“老板我们何不给每个顾客定制一个VIP会员卡?把顾客的信息都记录在这个卡里面,然后顾客第一次来的时候就发放给他,以后他再来凭这个VIP卡就可以进店,无需登记啦!”,这小子是我年初招来的叫劲舞团,名字太怪了,我们还是简称叫他JWT吧!
“你这小屁孩,就瞎说,那万一顾客把卡借给别人呢?”如花愤愤的说到。如花是老员工从业经验丰富,这句话说得确实没错。
“哦!~没关系我这几天就在研究咱们店的情况,所以呢?我专门设计了这种VIP卡,二位还请慢慢听我说。”JWT慢条斯理的说。
这种卡分内的信息分三部分组成。
1、头部(Header):
算法名称和tocken类型
2、有效存储区(Payload):
这里面呢存储用户的相关信息,用户名啊,性别呀,年龄呀等等吧
3、防伪logo(Signature)
这里是根据前两个声明的信息,按照声明的方法,然后我们再混里咱们店独有的配方加密。保证别人都看不懂,只有我们店才能看懂。
拿一张图来说明吧!

“看到没?右侧就是那三部分的示例。
然后我们再设定这张卡的有效期,多久之后还得重新签发一次哦,这样就没问题啦,顾客在卡有效期内就不用老去前台啦!“JWT兴奋的说到。
如花被JWT如上一说也是沉吟许久没有说话。
“明天你全权负责这套认证机制,保证我们店顾客不要因为排队而放弃来我们店消费的念头”我对JWT说。
“谢谢老板,我马上就去办”JWT得到我的首肯后一溜烟的跑了。
上面这个故事就是我要对各位说的关于传统认证和JWT认证的区别:
由于http是无状态的,传统方式如何区别谁来了?谁走了呢?
1、传统认证客户端信息保留在服务器端的内存中,这里就是我们说的session,客户端下次再来需要拿着sessionID去内存查询相关信息。记得那个可怜的王公子嘛?他就是!而上面的前台客户及时我们说的服务器端的内存。
缺点:这样做的毛病就是客户端信息都放在服务器内存中,服务器不光要提供相关资源还得存储客户端信息。当数据越来越多的时候就会臃肿无比。这就是咱们常说的设计上的热点!
JWT就不一样了:当客户端第一次携带用户名密码请求认证成功后,会返回给他一个tocken。里面有其加密过后的对于该客户端描述信息。在以后访问任何接口只需要在API后边携带该tocken就可以正常使用其API了
我再写第三版devops时就是用的JWT认证方式,为了让大家看的更清晰我再上两个图:
首先访问loginAPI:

因为用的rest_framework写的,所以自带的API调试界面
然后我们输入正确的用户名密码,进行认证
再看上面的返回值:

这个tocken值就是上面那个JWT说的VIP会员卡。分三部分哦!每个部分有一个点分开:
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxLCJ1c2VybmFtZSI6InJvb3QiLCJleHAiOjE1NTc1NDYzMTgsImVtYWlsIjoiMTIzQDEyMy5jb20ifQ.JRfA0t_Ft5229Bvg5gioLk2uoQ-0L30sl3MKGAqR_IQ"
至于每部分是什么?小职员JWT已经替我说清楚了。
行啦小伙伴们,是不是对JWT有了一定的了解呢?
我还没吃饭呐!先闪了!
记得来我店里玩哈!
关注公众号:

JWT认证阐述的更多相关文章
- 使用python实现后台系统的JWT认证(转)
今天的文章介绍一种适用于restful+json的API认证方法,这个方法是基于jwt,并且加入了一些从oauth2.0借鉴的改良. 1. 常见的几种实现认证的方法 首先要明白,认证和鉴权是不同的.认 ...
- sau交流学习社区--songEagle开发系列:Vue.js + Koa.js项目中使用JWT认证
一.前言 JWT(JSON Web Token),是为了在网络环境间传递声明而执行的一种基于JSON的开放标准(RFC 7519). JWT不是一个新鲜的东西,网上相关的介绍已经非常多了.不是很了解的 ...
- Asp.Net Core基于JWT认证的数据接口网关Demo
近日,应一位朋友的邀请写了个Asp.Net Core基于JWT认证的数据接口网关Demo.朋友自己开了个公司,接到的一个升级项目,客户要求用Aps.Net Core做数据网关服务且基于JWT认证实现对 ...
- Laravel 中使用 JWT 认证的 Restful API
Laravel 中使用 JWT 认证的 Restful API 5天前/ 678 / 3 / 更新于 3天前 在此文章中,我们将学习如何使用 JWT 身份验证在 Laravel 中构建 r ...
- JWT 认证 以及Django 中的应用
jwt 认证 私钥.公钥.CA认证 用一套加密规则 加密和解密 RSA加密 (非对称的加密) 摘要算法:MD5 FTP/互联网下载软件校验MD5 私钥 --RSA算法-->公钥 RSA原理 加密 ...
- asp.net core 自定义401和异常显示内容(JWT认证、Cookie Base认证失败显示内容)
asp.net core 2.0使用JWT认证园子里已经有挺多帖子了,但开发中发现认证未授权情况下返回的401状态码是没有任何信息的,业务中可能有需要返回一串错误的Json信息.在这里我分享一个自定义 ...
- Asp.net Core认证和授权:JWT认证和授权
JWT验证一般用户移动端,因为它不像cookie验证那样,没有授权跳转到登陆页面 JWT是json web token的简称,在 jwt.io 网址可以看到 新建一个API项目,通过postman ...
- 如何简单的在 ASP.NET Core 中集成 JWT 认证?
前情提要:ASP.NET Core 使用 JWT 搭建分布式无状态身份验证系统 文章超长预警(1万字以上),不想看全部实现过程的同学可以直接跳转到末尾查看成果或者一键安装相关的 nuget 包 自上一 ...
- 把旧系统迁移到.Net Core 2.0 日记 (18) --JWT 认证(Json Web Token)
我们最常用的认证系统是Cookie认证,通常用一般需要人工登录的系统,用户访问授权范围的url时,会自动Redirect到Account/Login,登录后把认证结果存在cookie里. 系统只要找到 ...
随机推荐
- java的自动类型转换
package BaseType; /*java的自动类型提升和窄化转换 * * 1. 当一个char,short,byte类型的变量被赋值给一个超出他自身能表示的最大范围的数,java会自动将该数转 ...
- MVC+ZTree实现对树的CURD及拖拽操作
上一讲中,我们学习了如何使用zTree对一棵大树(大数据量的树型结构的数据表,呵呵,名称有点绕,但说的是事实)进行异步加载,今天这讲,我们来说说,如何去操作这棵大树,无非就是添加子节点,删除节点,编辑 ...
- 小贝_mysql优化学习
mysql优化 简要: 1.数据库设计优化 2.sql语句优化 3.表切割 4.读写分离技术 一.数据库设计优化 1.表设计要符合三范式.当然,有时也须要适当的逆范式 2.什么是三范式 一范式: 具有 ...
- sql里的in对应linq的写法 及 IQueryable转化为Dictionary
string[] arID = { "0001", "0002" }; var dict = this.service.GetMyList(m => ar ...
- VS创建Web项目提示配置IISExpress失败
开发服务器VS2013,新建Web项目提示: 打开Web项目提示: 解决方法:控制面板,找到IISExpress,右键 选择修复,解决问题..
- BZOJ1087=Codevs2451=洛谷P1896&P2326互不侵犯
1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2885 Solved: 1693[Submit][ ...
- mongodb09----replicattion set--健壮性
replication set复制集 replicattion set 多台服务器维护相同的数据副本,提高服务器的可用性.一台是服务器出问题了另外2台还可以接收干,secondary平时保持只读状态, ...
- mongo03
Mongo存储的单位是文档,文档是js对象, use test2 db.createCollection("stu")//隐士创建库显示创建表 db.stu.,name:" ...
- YTU 1099: Minesweeper
1099: Minesweeper 时间限制: 1 Sec 内存限制: 64 MB 提交: 180 解决: 98 题目描述 Minesweeper Have you ever played Min ...
- Android NDK生成及连接静态库与动态库
对于Android应用开发,大部分情况下我们使用Java就能完整地实现一个应用.但是在某些情况下,我们需要借助C/C++来写JNI本地代码.比如,在使用跨平台的第三方库的时候:为了提升密集计算性能的时 ...