添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

fastapi token 验证

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 验证方式仅供参考,实际生产环境中应该根据具体业务需求进行安全验证。

  •