JWT token认证登陆
前一篇博客讲述了获取和验证请求参数, 这一篇就实践下,演示一个最基础的JWT认证,我公司是用了两个token方式验证,一个请求token,一个刷新token,请求token过期时间短,专门用于请求数据,刷新token专门用于刷新过期请求token用的。
jwt官网 https://jwt.io/
如果还有不懂JWT的,就需要好好看看JWT的知识了,JWT认证目前是前后端分离中非常流行的一种认证方式: 由三段组成 第一段通常是加密算法,第二段是你存储的自定义信息(未加密任何人可以去https://jwt.io/看到数据) 第三段是 第一段和第二段生成的签名参数确保token没有被修改
** 更多关于FastAPI的文章,请关注个人网站 https://www.charmcode.cn/**
生成Token
依赖库
python 目前有好几个库实现jwt验证
python-josepyjwtjwcryptoauthlib(ps:有幸在PyCon2019上海见过此库作者 github)
这里不做对比演示,就随便选一个
pip install python-jose
简单的演示
from datetime import datetime, timedelta
from jose import jwt
# 加密密钥 这个很重要千万不能泄露了
SECRET_KEY = "kkkkk"
# 设置过期时间 现在时间 + 有效时间 示例5分钟
expire = datetime.utcnow() + timedelta(minutes=5)
# exp 是固定写法必须得传 sub和uid是自己存的值
to_encode = {
"exp": expire, "sub": str(123), "uid": "12345"}
# 生成token
encoded_jwt = jwt.encode(to_encode, SECRET_KEY, algorithm="HS256")
print(encoded_jwt)
# eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1OTU1MDg5MzQsInN1YiI6IjEyMyIsInVpZCI6IjEyMzQ1In0.lttAYe808lVQgGhL9NXei2bbC1LIGs-SS0l6qfU_QxU
可以复制去 https://jwt.io/ 解出来看看

解密token
payload = jwt.decode(
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1OTU1MDg5MzQsInN1YiI6IjEyMyIsInVpZCI6IjEyMzQ1In0.lttAYe808lVQgGhL9NXei2bbC1LIGs-SS0l6qfU_QxU",
SECRET_KEY, algorithms="HS256"
)
print(payload)
# {'exp': 1595508934, 'sub': '123', 'ui

本文详细讲解了JWT(JSON Web Tokens)的生成与解密过程,包括使用python-jose库进行JWT的编码与解码,以及如何在FastAPI框架中实现JWT认证登陆。同时,介绍了JWT的常见异常处理和在实际项目中的应用。
最低0.47元/天 解锁文章
8208

被折叠的 条评论
为什么被折叠?



