在python-fast Api中间件中引发异常 [英] Raise exception in python-fastApi middleware
本文介绍了在python-fast Api中间件中引发异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试在Fastapi中间件中验证令牌,但这似乎是不可能的。正如我所想的那样,中间件需要进行下一次调用,尽管这不是必需的。我找不到任何好的解决方案来在这个python-fast api后端一次性处理令牌。如有任何帮助,我们不胜感激。
@app.middleware("http")
async def add_middleware_here(request: Request, call_next):
token = request.headers["Authorization"]
try:
verification_of_token = verify_token(token)
if verification_of_token:
response = await call_next(request)
return response
except InvalidSignatureError as er:
raise HTTPException(status_code=401)
推荐答案
您需要返回响应。我将向您展示如何使其工作:
from fastapi.responses import JSONResponse
@app.middleware("http")
async def add_middleware_here(request: Request, call_next):
token = request.headers["Authorization"]
try:
verification_of_token = verify_token(token)
if verification_of_token:
response = await call_next(request)
return response
else:
return JSONResponse(status_code=403) # or 401
except InvalidSignatureError as er:
return JSONResponse(status_code=401)
请注意,使用此中间件意味着您的API上没有登录路由(用于令牌生成)。
此外,您应该考虑改用此依赖项:https://fastapi.tiangolo.com/tutorial/security/simple-oauth2/
另外,您可以使用fastapi.status作为状态代码。
这篇关于在python-fast Api中间件中引发异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文