在FastAPI中使用中间件来验证Token的过程如下所示:
- 首先,我们需要创建一个自定义的中间件函数。这个函数将会被应用到每个路由上,以便进行身份验证。可以通过装饰器@app.middleware(“http”)来标记该函数为中间件。
from fastapi import FastAPI, HTTPException
import jwt
def verify_token(request):
token = request.headers.get('Authorization') # 从请求头获取Token
if not token or "Bearer" not in token:
raise HTTPException(status_code=403, detail="Invalid Token") # 若没有提供或无效的Token则返回错误信息
try:
payload = jwt.decode(token[7:], 'secret', algorithms=['HS256']) # 对Token进行解密并校验
return True
except Exception as e:
print(e)
raise HTTPException(status_code=403, detail="Invalid Token") # 若Token无法正确解密或校验失败则返回错误信息
- 然后,我们需要在主文件(比如main.py)中导入FastAPI类、设置路由等操作之前添加中间件。
from fastapi import FastAPI
from .verify_token import verify_token
app = FastAPI()
# 注册中间件
app.add_middleware(verify_token)
# ...其他路由及相关配置...
现在,当客户端发送HTTP请求时,中间件函数 verify_token() 将会在处理请求之前运行。如果请求未包含有效的Token,服务器将返回状态码为403的错误响应;否则,请求将继续传递给目标路由进行处理。