快速从 cookie 中删除凭据 api

Remove credential from cookies in fast api

我有一个快速 api 应用程序。我想像这样设置一个基本的 HTTP 身份验证(我知道这不安全,但这是为了测试目的):

users = {
    "poisson": "rouge",
    "alice": "nevers",
    "bob": "dylan"
}

def user_login(credentials: HTTPBasicCredentials = Depends(security)):
    if not (credentials.username in users.keys() and users[credentials.username] == credentials.password):
        raise HTTPException(
            status_code = status.HTTP_401_UNAUTHORIZED,
            detail="Mauvais username ou mot de passe",
            headers={"WWW-Authenticate": "Basic"}
        )
    return credentials.username


@app.get("/somewhere")
def my_func(credentials: HTTPBasicCredentials = Depends(user_login), n: int = 20):
    # do something
return json

我的第一个问题是,我如何“告诉”不要在 cookie 中存储凭据?因为当我做很多测试时,即使我使用 logoutin fastapi swager 我登录后我仍然有凭据(我需要从 chrome设置)。

我的第二个问题是,我怎样才能 return 也 credentials.username 在我的函数 my_func 中,因为我已经 return 使用 json不同的数据。我应该将凭据数据插入我的 json 吗?

您的代码中没有任何内容表明正在使用 cookie。 swagger UI 可能会使用 cookie 来存储身份验证信息,以避免每次请求都必须重新输入它,但是您自己的 API 似乎没有以任何方式使用 cookie。

对于程序化测试,我建议 using TestClient instead

当 return 处理数据时,您必须决定什么是有意义的,例如,您可以 return 字典中的两个级别的数据:

return {'username': credentials, 'func_result': json}