token和jwt
2023-03-31 11:05:27 时间
首先明确:JWT = JSON WEB TOKEN
那么就很简单了,Token=令牌,JWT=含有json信息的令牌
用一个形象一点的例子解释一下Token和JWT的区别与联系:
以前医生开药单,都是用的龙飞凤舞的特殊简写,你只有把这个药方拿到指定的取药处,取药人根据药方结合脑中的对照表,就知道这个药方代表着什么意思了。
这就是普通的token,即token本身并没有实际信息,token代表着什么意思需要到服务器端进行对照。
现在医生开药单都是电脑开单,药名什么的都非常清晰,拿着药单去哪里都能看懂,无需任何对照。
这就是jwt,即token本身携带了信息,无需到指定的药房,也无需对照就能知道token代表的信息。
通过这个伪例子,用一句话总结一下token和jwt的区别:jwt是自身包含认证信息的特殊token。
1、token
在传统的项目中,登录成功后主要有下边几个动作:
后端生成session存储在数据库中(一般是Redis)
将session返回给前端,前端将session保存到cookie
后续请求都携带sessionID,则后端根据sessionID去数据库中校验当前请求是否合法
![0](https://img2022.cnblogs.com/blog/1548895/202206/1548895-20220616183658733-2015979947.png)
其中这个sessionID其实就是实际意义上的通行证、令牌,也就是我们常说的Token。
但是我们发现,sessionID一般都是用UUID直接生成的本身没有实际意义,这个Token代表的信息必须与缓存数据库中存储的session信息进行对比才能知道对应的认证信息。
2、jwt
![0](https://img2022.cnblogs.com/blog/1548895/202206/1548895-20220616184219857-1110477054.png)
在现在的多数项目中,业务更加复杂,接口鉴权的频次也越来越高,为了减少和缓存数据库的数据交换,更多人选择使用jwt,这样直接校验jwt本身即可明确当此请求的主体,无需和Redis中的信息进行对照即可完成鉴权。
jwt的生成和解析都有固定的算法,里边包含了头信息、载荷信息和签名,通过指定的解析方法就可得到jwt中的载荷信息,从而判断当前的请求是谁发起的、请求是否超期等等信息。
相关文章
- 深入探讨Java中的异常与错误处理
- 研究学习Kotlin的一些方法
- 数据显示Java热度持续下落,日子屈指可数?
- 2017年5月编程语言排行榜:Java与C语言优势正开始缩小
- Java多线程之内置锁与显示锁
- Java线程池的理论与实践
- 白话阿里巴巴Java开发手册(编程规约)
- 关于Java你不知道的十件事
- Java服务化系统线上应急和技术攻关,你必须掌握的Linux命令
- Java实现高斯模糊和图像的空间卷积
- Java阻塞队列实现原理分析
- NPM使用技巧
- Node.js对Java开发者而言是什么?
- Java反射机制应用实践
- 理解RxJava中的Single和Completable
- 2017年你不能错过的Java类库
- 大规模集群下的Hadoop NameNode
- 从源码解密Spark内存管理
- 2017年3月编程语言排行榜:Swift首次进入前十
- JVM热点技术:Java类的加载机制