FastAPI - HTTP 基本身份验证 - 选择自己的 usernam/pass 和 Base64
FastAPI - HTTP Basic Auth - Choose own usernam/pass & Base64
如何添加我的用户名和密码并为 Basic Auth 添加 base64。 (https://fastapi.tiangolo.com/tutorial/security/http-basic-auth/)
我读了很多书,最后我什至设置了 OAuth2 密码(和散列),Bearer 和 JWT 令牌 但这对我来说太过分了,我只需要一个简单的 Basic Auth 并在其上添加一个小的保护,基本上添加一个 base64。
我的想法是在 header:
中有这样的东西
{'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}
我的问题:
如何选择我自己的用户名和密码,然后才能使用 base64 来 encode/decode 授权,以便能够发送到 header 类似的东西:
{'Authorization': 'Basic aGVsbG86d29ybGQ='} #hello: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}
所以你要做的就是使用一个Depends
对象。这个层次是一个简单的例子,但通常你的 get_current_username()
会做一个数据库查询来检查用户和他们相应的密码是否存在。
你也可以看看这个 git-repo https://gist.github.com/nilsdebruin/8b36cd98c9949a1a87e3a582f70146f1
希望对您有所帮助! :)
如何添加我的用户名和密码并为 Basic Auth 添加 base64。 (https://fastapi.tiangolo.com/tutorial/security/http-basic-auth/)
我读了很多书,最后我什至设置了 OAuth2 密码(和散列),Bearer 和 JWT 令牌 但这对我来说太过分了,我只需要一个简单的 Basic Auth 并在其上添加一个小的保护,基本上添加一个 base64。
我的想法是在 header:
中有这样的东西{'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}
我的问题:
如何选择我自己的用户名和密码,然后才能使用 base64 来 encode/decode 授权,以便能够发送到 header 类似的东西:
{'Authorization': 'Basic aGVsbG86d29ybGQ='} #hello: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}
所以你要做的就是使用一个Depends
对象。这个层次是一个简单的例子,但通常你的 get_current_username()
会做一个数据库查询来检查用户和他们相应的密码是否存在。
你也可以看看这个 git-repo https://gist.github.com/nilsdebruin/8b36cd98c9949a1a87e3a582f70146f1
希望对您有所帮助! :)