| 知乎专栏 |
security = HTTPBasic()
def auth(credentials: Annotated[HTTPBasicCredentials, Depends(security)]):
current_username_bytes = credentials.username.encode("utf8")
correct_username_bytes = b"admin"
is_correct_username = compare_digest(current_username_bytes, correct_username_bytes)
current_password_bytes = credentials.password.encode("utf8")
correct_password_bytes = b"admin"
is_correct_password = compare_digest(current_password_bytes, correct_password_bytes)
if not (is_correct_username and is_correct_password):
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Incorrect username or password",
headers={"WWW-Authenticate": "Basic"},
)
return credentials.username
应用与方法
@app.get("/who")
@cache(expire=60)
def read_current_user(username: Annotated[str, Depends(auth)]):
return {"username": username}
全局配置
app = FastAPI(title="netkiller", description="HTTP Auth 测试", dependencies=[Depends(auth)])