快速从 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 中存储凭据?因为当我做很多测试时,即使我使用 logout
in 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}
我有一个快速 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 中存储凭据?因为当我做很多测试时,即使我使用 logout
in 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}