session和jwt
session 原理
第一次使用session时,创建当前客户端的cookie返回给客户端,并在接下来的请求中携带cookie
Http 无状态,有会话
- 无状态是指,请求之间相互独立,第一次请求的数据,第二次请求不能重用
- 有会话是指,客户端和服务端都有相应的技术,可以暂存数据,让数据在请求间共享
服务端使用了 session 技术来暂存数据
存
GET /s1?name=zhang HTTP/1.1
Host: localhost
第一次使用session时
响应体中携带Set-Cookie: JSESSIONID=JSESSIONID=A32302F039DB1769C6033AE86C206CF1,
并且之后的请求头中都携带Cookie
取
GET /s2 HTTP/1.1
Host: localhost
Cookie: JSESSIONID=A32302F039DB1769C6033AE86C206CF1
session 技术实现身份验证
jwt 原理
jwt 技术实现身份验证
生成 token
GET /j1?name=zhang&pass=123 HTTP/1.1
Host: localhost
校验 token
GET /j2 HTTP/1.1
Host: localhost
Authorization: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiJ9._1-P_TLlzQPb1_lCyGwplMZaKQ8Mcw_plBbYPZ3OX28
1、签名是由前面两个字段进行特殊加密而生成的,当下一次请求过来的token中的签名与已知签名不一致时校验失败。
2、前面两个字段不具备保密性,可通过Base64解码,如图