fastapi 设置授权令牌基本

fastapi set auth token basic

我正在尝试为我正在设置的基本 API 设置一个安全 API 令牌。

由于某种原因,在使用此设置时它不起作用,即

async def get_emotions(uid, substance, x_token: Optional[str] = Header(None)):
    if x_token != os.getenv('APIKEY'):
        raise HTTPException(status_code=401,
                            detail='wrong api key',
                            headers={"WWW-Authenticate": "Bearer"})

使用这样的查询,

curl --location --request GET 'http://0.0.0.0:8008/Emotions.json?uid=xxxx&substance=Dexamphetamine' \
--header 'x_token: example$oken'

正在返回 401 未验证错误,即使我的环境变量正在获取相同的标记。

有解决这个问题的想法吗?

您需要在 [=13] 中将 convert_underscores 设置为 False =]

因此,您的函数将是,

async def get_emotions(
    uid, substance, x_token: Optional[str] = Header(None, convert_underscores=False)
):
    if x_token != os.getenv("APIKEY"):
        raise HTTPException(
            status_code=401,
            detail="wrong api key",
            headers={"WWW-Authenticate": "Bearer"},
        )
    return {"foo": "bar"}