我正在尝试验证 fastapi 中间件中的令牌,但这似乎不可能。我认为中间件需要进行下一次调用,尽管这不是必需的。我无法在这个 python-fastapi 后端找到任何好的解决方案来一次性处理令牌。任何帮助表示赞赏。
@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/ https://fastapi.tiangolo.com/tutorial/security/simple-oauth2/
另一件事是你可以使用fastapi.状态 https://fastapi.tiangolo.com/tutorial/response-status-code/作为您的状态代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)