知乎专栏 |
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)])