Python FastAPI的自定义身份验证

Python FastAPI的自定义身份验证,python,fastapi,Python,Fastapi,如何为fastapi创建自定义身份验证 例如: 我想用标题{'password':'best password'}提出请求,如果标题中的password key是best password,则只允许对内容进行可见的身份验证,而无需在所有视图中进行更改,并且与通用文档兼容。如果您不关心与swagger前端的奇特集成,您只需创建一个用于验证令牌的依赖项 from fastapi import FastAPI, HTTPException, Depends, Request def

如何为fastapi创建自定义身份验证

例如:
我想用标题{'password':'best password'}提出请求,如果标题中的password key是best password,则只允许对内容进行可见的身份验证,而无需在所有视图中进行更改,并且与通用文档兼容。

如果您不关心与swagger前端的奇特集成,您只需创建一个用于验证令牌的依赖项

    from fastapi import FastAPI, HTTPException, Depends, Request

    def verify_token(req: Request):
        token = req.headers["Authorization"]
        # Here your code for verifying the token or whatever you use
        if token is not valid:
            raise HTTPException(
                status_code=401,
                detail="Unauthorized"
            )
        return True
    
    @app.post("/auth")
    async def login(password: str):
        if password == "my_password":
            return {"token": password} # Generate your own token
    
    @app.get("/")
    async def home(authorized: bool = Depends(verify_token)):
         if authorized:
            return {"detail": "Welcome home"}
我没有测试代码,但它应该足以让您了解它应该如何工作


如果你想把所有东西都很好地集成到Swigger UI中,请告诉我。因为准备它很长很耗时,如果没有必要,我就不准备了。此外,您还必须遵循swagger的实现,据我从您的问题中了解,这并不完全是您所要求的。

如果您不关心与swagger前端的奇特集成,您只需创建一个用于验证令牌的依赖项即可

    from fastapi import FastAPI, HTTPException, Depends, Request

    def verify_token(req: Request):
        token = req.headers["Authorization"]
        # Here your code for verifying the token or whatever you use
        if token is not valid:
            raise HTTPException(
                status_code=401,
                detail="Unauthorized"
            )
        return True
    
    @app.post("/auth")
    async def login(password: str):
        if password == "my_password":
            return {"token": password} # Generate your own token
    
    @app.get("/")
    async def home(authorized: bool = Depends(verify_token)):
         if authorized:
            return {"detail": "Welcome home"}
我没有测试代码,但它应该足以让您了解它应该如何工作


如果你想把所有东西都很好地集成到Swigger UI中,请告诉我。因为准备它很长很耗时,如果没有必要,我就不准备了。此外,您还必须遵循swagger的实现,据我从您的问题中了解,这并不完全是您所要求的。

我不明白。您需要具有自定义身份验证的API端点。这将显示一个自定义的招摇过市?您介意详细说明您的问题吗?我想用Auth0实现JWT授权。我不想要任何jwt fastapi工具,因为在python库中,auth0就是一切。我有一个检查令牌并将其与auth0 API匹配的函数。我不知道如何在fast API中实现一个简单的方法这是我在fast API中的第一个应用这是我的简单代码。它检查身份验证令牌并将其与外部服务匹配。我不明白。您需要具有自定义身份验证的API端点。这将显示一个自定义的招摇过市?您介意详细说明您的问题吗?我想用Auth0实现JWT授权。我不想要任何jwt fastapi工具,因为在python库中,auth0就是一切。我有一个检查令牌并将其与auth0 API匹配的函数。我不知道如何在fast API中实现一个简单的方法这是我在fast API中的第一个应用这是我的简单代码。它检查身份验证令牌并将其与外部服务匹配@伊莎比+1表示招摇兼容approach@Isabi+1表示招摇兼容的方法