JWT基本介绍与使用
★ JWT基本概念
JWT(JSON Web Token)是一种用于在网络应用之间传递信息的安全方式。它是一种基于 JSON 的开放标准(RFC 7519),用于在网络应用之间安全地传输声明。JWT 通常用于身份验证和授权,以及在分布式系统中传递声明。
★ JWT组成部分
JWT 由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。其中,头部和载荷都是 JSON 对象,签名是对头部和载荷进行加密后的字符串。
★ JWT 的使用流程
1. 用户向服务器发送身份验证请求,服务器验证用户身份并生成 JWT。
2. 服务器将 JWT 发送回客户端,客户端将其存储在本地。
3. 客户端向服务器发送请求时,将 JWT 作为请求头部的 Authorization 字段发送给服务器。
4. 服务器验证 JWT 的签名和有效期,并根据其中的声明进行授权。
★ JWT 的优点
无状态:JWT 中包含了所有必要的信息,因此服务器不需要在自己的数据库中存储用户信息,从而使得服务器可以更容易地扩展。
跨平台:由于 JWT 是基于 JSON 的开放标准,因此它可以在不同的编程语言和平台之间进行交互。
安全性:JWT 使用签名来验证数据的完整性和真实性,从而保证了数据的安全性。
★ JWT 说明
需要注意的是,JWT 中的信息是可以被解码的,因此不应该在 JWT 中存储敏感信息。此外,JWT 的有效期应该设置得足够短,以避免被恶意利用
★ JWT 使用示例
"""
pip install PyJWT
"""
import jwt
import datetime
# -------------------------JWT生成-----------------------------
# 设置密钥
secret_key = 'my_secret_key'
# 设置过期时间
expires_in = datetime.datetime.utcnow() + datetime.timedelta(minutes=30)
# 设置载荷
payload = {
'website': 'stu_manage',
'user_id': 123,
'exp': expires_in
}
# 生成JWT
jwt_token = jwt.encode(payload, secret_key, algorithm='HS256')
print(jwt_token)
# -------------------------JWT解析-----------------------------
# JWT解析(验证 JWT 签名)
decoded_token = jwt.decode(jwt_token, secret_key, algorithms=['HS256'])
# 解密后的 JWT 载荷
print(decoded_token)
print(datetime.datetime.fromtimestamp(decoded_token['exp']))
# 读取JWT头部header
print(jwt.get_unverified_header(jwt_token))
热门相关:我真不是暴发户 剑仙三千万 一世倾心:误惹腹黑师弟 妖魔哪里走 原来你喜欢我呀