password
查看人数
type
status
date
slug
summary
category
icon
tags
作者
状态
在 FastAPI 中实现 JWT(JSON Web Token)的加密和解密通常涉及以下几个步骤:
- 安装依赖:首先,你需要安装
PyJWT
库来处理 JWT 的编码和解码。
- 创建 JWT 工具函数:你可以创建一些工具函数来生成和验证 JWT。
- 在 FastAPI 中使用 JWT:你可以在 FastAPI 的路由中使用这些工具函数来处理
- 运行 FastAPI 应用:你可以使用
uvicorn
来运行你的 FastAPI 应用。
解释
create_jwt_token
:这个函数用于生成 JWT。它接受一个字典data
作为输入,并可以指定一个过期时间expires_delta
。JWT 会包含一个exp
字段,表示令牌的过期时间。
verify_jwt_token
:这个函数用于验证 JWT。如果令牌有效且未过期,它会返回解码后的 payload。如果令牌无效或已过期,它会抛出相应的异常。
/token
路由:这个路由用于用户登录并生成 JWT。它接受用户名和密码,验证用户信息,并生成一个 JWT。
/protected
路由:这个路由是受保护的,只有携带有效 JWT 的请求才能访问。它使用OAuth2PasswordBearer
来自动提取并验证 JWT。
注意事项
- 密钥管理:在实际应用中,密钥 (
SECRET_KEY
) 应该妥善保管,不要硬编码在代码中。可以使用环境变量或密钥管理服务来管理密钥。
- 安全性:JWT 的安全性依赖于密钥的保密性。确保使用强密钥,并定期轮换密钥。
- 令牌过期:JWT 应该设置合理的过期时间,以防止令牌被长期滥用。
dependencies=[Depends(verify_jwt_token)] 在 APIRouter 里 | 只作用于该 router 的所有接口 | 只需改 router = APIRouter(...) |
dependencies=[Depends(verify_jwt_token)] 在 FastAPI 里 | 全局所有接口都会验证 | 只需在 FastAPI() 里加依赖 |
在每个 API 手动 verify_jwt_token(token) | 仅作用于某些 API | 需要每个 API 手动加代码 |
有关使用上的问题,欢迎您在底部评论区留言,一起交流~
- 作者:躁静有徒
- 链接:https://blog.zaojingyoutu.top//article/4c21ebfd-c1e5-49a9-a0d1-d5127b787feb
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。