Python FastAPI-HTTP基本身份验证-选择自己的用户NAM/pass&;Base64

Python FastAPI-HTTP基本身份验证-选择自己的用户NAM/pass&;Base64,python,fastapi,Python,Fastapi,如何添加用户名和密码,以及如何为基本身份验证添加base64。() 我读了很多书,甚至用密码(和散列)设置了OAuth2,用JWT令牌设置了承载器,但这对我来说太多了,我所需要的只是一个简单的基本身份验证,要在其上添加一个小的保护,基本上添加一个base64 我们的想法是在标题中有这样的内容: {'Authorization':'Basic aGVsbG86d29ybGQ='}你好:世界 然而,我的知识水平很低,我遇到的第一个问题是如何在以下情况下使用我自己的用户名和密码: from fasta

如何添加用户名和密码,以及如何为基本身份验证添加base64。()

我读了很多书,甚至用密码(和散列)设置了OAuth2,用JWT令牌设置了承载器,但这对我来说太多了,我所需要的只是一个简单的基本身份验证,要在其上添加一个小的保护,基本上添加一个base64

我们的想法是在标题中有这样的内容:

{'Authorization':'Basic aGVsbG86d29ybGQ='}你好:世界

然而,我的知识水平很低,我遇到的第一个问题是如何在以下情况下使用我自己的用户名和密码:

from fastapi import Depends, FastAPI
from fastapi.security import HTTPBasic, HTTPBasicCredentials

app = FastAPI()

security = HTTPBasic()


@app.get("/users/me")
def read_current_user(credentials: HTTPBasicCredentials = Depends(security)):
    return {"username": credentials.username, "password": credentials.password}

我的问题: 我如何选择自己的用户名和密码,然后才能使用base64对授权进行编码/解码,以便能够发送到标题,如:


{'Authorization':'Basic aGVsbG86d29ybGQ='}您好:world

我没有使用过FastAPI,但我查看了文档。这里提供了以下源代码:

from fastapi import Depends, FastAPI, HTTPException
from fastapi.security import HTTPBasic, HTTPBasicCredentials
from starlette.status import HTTP_401_UNAUTHORIZED

app = FastAPI()

security = HTTPBasic()


def get_current_username(credentials: HTTPBasicCredentials = Depends(security)):
    if credentials.username != "foo" or credentials.password != "password":
        raise HTTPException(
            status_code=HTTP_401_UNAUTHORIZED,
            detail="Incorrect email or password",
            headers={"WWW-Authenticate": "Basic"},
        )
    return credentials.username


@app.get("/users/me")
def read_current_user(username: str = Depends(get_current_username)):
    return {"username": username}
所以你要做的就是使用一个
依赖的
对象。这个hier是一个简单的例子,但通常您的
get\u current\u username()
会执行数据库查询,以检查用户及其相应的密码是否存在。 你也可以看看这个git回购


我希望这对你有帮助!:)

您知道基本身份验证实际上是一个非常糟糕的身份验证选项,对吗?每个人都可以阅读用户名/密码标题并对其进行解码(它是base64编码的)。我知道,而且我可能不会做任何大项目——足够大,可以“关心”它是否被黑客入侵,因为它不会影响我所做的任何事又来了!所以基本上,这是我不明白的一部分,我如何能够编辑它,以便我可以更改我希望使用的用户名和密码。因为现在我根本没能让它工作。代码可以工作,但我不知道我目前使用的用户名和密码是什么:(你的用户名是“foo”,密码是“password”,看看get\u current\u username()功能-它检查用户名和密码是否对应于硬编码字符串(奇怪的部分)。当在输入字段中输入foo和密码时。即使我写foo密码,它也会将我作为不正确的电子邮件或密码发送回。当我像顶部的图片一样大摇大摆地输入时会发生这种情况。它会弹出一个请求用户名和密码