如何为fastapi创建自定义身份验证?
示例: 我想使用标头{'password':'best password'}发出请求,并且如果标头中的密码键是“ best password”,则允许在不更改所有视图的情况下可见“仅认证”内容(并与通用文档兼容)
答案 0 :(得分:4)
如果您不希望与swagger前端进行精美的集成,则只需创建一个用于验证令牌的依赖项即可。
from fastapi import FastAPI, HTTPException, Depends, Request
def verify_token(req: Request):
token = req.headers["Authorization"]
# Here your code for verifying the token or whatever you use
if token is not valid:
raise HTTPException(
status_code=401,
detail="Unauthorized"
)
return True
@app.post("/auth")
async def login(password: str):
if password == "my_password":
return {"token": password} # Generate your own token
@app.get("/")
async def home(authorized: bool = Depends(verify_token)):
if authorized:
return {"detail": "Welcome home"}
我没有测试代码,但足以让您了解其工作方式。
如果您希望将所有内容都与swagger UI很好地集成在一起,请告诉我。由于准备它的时间很长而且很耗时,所以如果没有必要,我不会准备它。另外,您还必须遵循swagger的实现,据我从您的问题中可以理解,它并不完全符合您的要求。