Token需要查库验证Token是否有效,而Jwt不用查库或者少查库,直接在服务端进行校验,并且不用查库。因为用户的信息及加密信息在第二部分payload和第三部分签证中已经生成,只要在服务端进行校验就行,并且校验也是JWT自己实现的。 TOKEN 概念: 令牌, 是访问资源的凭证。
Token的认证流程:
- 用户输入用户名和密码,发送给服务器。
- 服务器验证用户名和密码,正确的话就返回一个签名过的Token(Token可以认为就是个长长的字符串),浏览器客户端拿到这个Token。
- 后续每次请求中,浏览器会把Token作为http header发送给服务器,服务器验证签名是否有效,如果有效那么认证就成功,可以返回客户端需要的数据。 特点: 这种方式的特点就是客户端的token中自己保留有大量信息,服务器没有存储这些信息。
JWT 概念:
JWT是json web token缩写。它将用户信息加密到token里,服务器不保存任何用户信息。服务器通过使用保存的密钥验证token的正确性,只要正确即通过验证。
组成:
WT包含三个部分: Header头部,Payload负载和Signature签名。由三部分生成token,三部分之间用“.”号做分割。
token是一个很宽泛的概念,翻译为令牌,一般用来表示经过验证之后得到的凭证,长度没有什么限制,多长都可以。token有很多种,可以是标准的,也可以是你自己定义的,jwt则是其中一种token,而且是标准的token。和我们自己随意定义的token差别大是很自然的,因为我们自己定义的token只需要用来识别用户登录状态,一般很短的uuid都可以实现,所以比较短。
jwt是 JSON Web Token,它也自称是一种token,jwt就是一个很具体的标准了,用点号分为三段,分别表示头、信息和签名。JWT就是最主流和流行的一种token标准,自定义的就不会有标准了,实现功能怎样简单怎么做,一般的做法,创建一个uuid,存入数据库然后把这个uuid当做token返回客户端就行。jwt好处是不需要把token存入数据库。
参考
简书:Token和Jwt存在什么区别
示例前端:https://gitee.com/mygiteepolaris/cookie-app-client.git
示例后端:https://gitee.com/mygiteepolaris/cookie-app-server.git
B站:cookie、session、jwt、token讲解
https://www.bilibili.com/video/BV1Ap4y1x7V3
B站:jwt、token讲解(程龙)
https://www.bilibili.com/video/BV1kE411J7TR