一、登录-JWT
1、什么是jwt
JSON Web Token (JWT) 是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。信息使用JSON组织。
2、组成
Header头部、Payload(载荷)、Signature(签名)
完成的jwt组成:
头部的base64.载荷的base64.签名
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
3、Header
头部信息 指定 jwt使用什么算法 是什么类型 alg:算法 typ:类型
{
"alg": "HS256",
"typ": "JWT"
}
4、Pyload
指定一些jwt的基本信息, 发送人iss 过期时间 exp
{
"iss": "张三",
"exp": "过期时间"
}
5、Signature
签名的组成,是由 header payload 加密以后生成的签名
如果 header部分 或者payload部分 发生了改变,则新的签名与原签名不一致,证明jwt被篡改。
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)
二、使用jwt
1、生成jwt
我们这里使用独立的jwt模块,来对jwt进行操作,使用pyjwt来实现。
import jwt
# 编码
jwt_s = jwt.encode({'name': 'Tom', 'age': 20}, '123')
print(jwt_s.decode())
# 解码
r = jwt.decode(jwt_s, '123',verify=True)
print(r)