FastAPI-HTTP基本身份验证-选择自己的usernam / pass和Base64

时间:2019-12-18 08:44:43

标签: python fastapi

如何添加我的用户名和密码并为基本身份验证添加base64。 (https://fastapi.tiangolo.com/tutorial/security/http-basic-auth/

我已经看了很多书,甚至最终还是用密码(和哈希)设置了 OAuth2,并用JWT令牌设置了Bearer ,但这对我来说太多了,我只需要一个简单的基本身份验证并在上面添加一个小的保护,基本上是添加一个base64。

想法是在标头中包含以下内容:

{'Authorization': 'Basic aGVsbG86d29ybGQ='} #hello:world

但是我的知识还很低,我还遇到了第一个问题,甚至配置如何使用我自己的用户名和密码:

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}

The Sign IN

我的问题:

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

{'Authorization': 'Basic aGVsbG86d29ybGQ='} #hello:world

1 个答案:

答案 0 :(得分:1)

我还没有使用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}

因此,您要做的是使用Depends对象。此hier是一个简单的示例,但是通常您的get_current_username()会进行数据库查询,以检查用户及其对应的密码是否存在。 您还可以查看此git-repo https://gist.github.com/nilsdebruin/8b36cd98c9949a1a87e3a582f70146f1

希望对您有所帮助! :)