【问题标题】:How to authenticate static routes in FastAPI如何在 FastAPI 中验证静态路由
【发布时间】:2021-06-08 17:54:36
【问题描述】:

我在 documentation 之后通过 FastAPI 静态提供文件夹:

from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles

app = FastAPI()

app.mount("/static", StaticFiles(directory="static"), name="static")

如何向此路由/static 添加基本身份验证(用户、密码)?

【问题讨论】:

    标签: fastapi starlette


    【解决方案1】:

    直接从 FastAPI 文档中提取:https://fastapi.tiangolo.com/advanced/security/http-basic-auth/

    import secrets
    
    from fastapi import Depends, FastAPI, HTTPException, status
    from fastapi.security import HTTPBasic, HTTPBasicCredentials
    
    app = FastAPI()
    
    security = HTTPBasic()
    
    
    def get_current_username(credentials: HTTPBasicCredentials = Depends(security)):
        correct_username = secrets.compare_digest(credentials.username, "stanleyjobson")
        correct_password = secrets.compare_digest(credentials.password, "swordfish")
        if not (correct_username and correct_password):
            raise HTTPException(
                status_code=status.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}
    

    【讨论】:

    • 我仍然需要弄清楚的部分是如何在不使用StaticFiles 类的情况下提供我的静态文件。我最终使用了 fastapi 提供的模板功能来服务一个网站:fastapi.tiangolo.com/advanced/templates
    【解决方案2】:

    我不确定您是否可以将基本身份验证添加到路由本身,我将其直接添加到端点。但这里是 fastapi 的最佳身份验证模块的链接。希望能帮助到你。我喜欢 FastAPI 登录。

    FastAPI Auth

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-12
      • 2020-10-08
      • 1970-01-01
      • 1970-01-01
      • 2021-08-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多