FastAPI 是一个快速(Fast)Web 框架,它支持使用 Token 进行身份验证。下面是一个简单的 FastAPI Token 验证的示例:
首先,您需要安装 FastAPI 和 PyJWT 库(用于生成和验证 JWT Token):
pip install fastapi
pip install PyJWT
然后,您需要在 FastAPI 中实现一个 Token 验证的函数,用于验证用户的 Token 是否合法:
from fastapi import HTTPException, Security
from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials
from jwt import decode, InvalidTokenError
# 密钥,用于生成和验证 JWT Token
SECRET_KEY = "secret"
# JWT 算法
ALGORITHM = "HS256"
# 定义 HTTP Bearer 安全验证方式
bearer_scheme = HTTPBearer()
# Token 验证函数
async def validate_token(credentials: HTTPAuthorizationCredentials = Security(bearer_scheme)):
token = credentials.credentials
try:
payload = decode(token, SECRET_KEY, algorithms=[ALGORITHM])
username = payload.get("sub")
if username is None:
raise HTTPException(status_code=401, detail="Invalid authentication credentials")
return username
except InvalidTokenError:
raise HTTPException(status_code=401, detail="Invalid authentication credentials")
上述代码中,我们定义了一个 validate_token
函数,该函数用于验证用户的 Token 是否合法。它通过 FastAPI 的 Security
装饰器实现对 HTTP Bearer 方式的安全验证。在 validate_token
函数中,我们使用 PyJWT 库的 decode
方法解码 Token,并使用密钥和算法进行验证。如果 Token 合法,则返回 Token 中的用户名,否则返回 HTTPException。
接下来,您可以在需要身份验证的 FastAPI 路由函数中使用 validate_token
函数进行 Token 验证:
from fastapi import FastAPI
app = FastAPI()
# 需要身份验证的路由函数
@app.get("/protected")
async def protected_route(username=Depends(validate_token)):
return {"message": f"Hello, {username}!"}
在上述代码中,我们定义了一个需要身份验证的路由函数 /protected
,通过 FastAPI 的 Depends
装饰器传递 validate_token
函数,从而实现对 Token 的验证。如果 Token 合法,则路由函数返回 Hello, {username}!
,其中 {username}
为 Token 中的用户名。
以上就是 FastAPI Token 验证的基本实现方式。需要注意的是,上述代码中的 Token 验证方式仅供参考,实际生产环境中应该根据具体业务需求进行安全验证。