已部署的 FastAPI 应用程序无法处理 API 密钥

问题描述 投票:0回答:1

这是我的 FastAPI 代码:

from fastapi import FastAPI, HTTPException, Security, status
from fastapi.security import APIKeyHeader
from pydantic import BaseModel
from pymongo import MongoClient
import os
import logging

app = FastAPI()

# Database setup
connection_string = os.environ["URI"]
client = MongoClient(connection_string)
db = client['gpt-4-vision-images']
collection = db['images']

# API Key setup

API_KEY = os.environ['API_KEY']
api_keys = [API_KEY]
api_key_header = APIKeyHeader(name="access_token", auto_error=False)


def get_api_key(api_key_header: str = Security(api_key_header), ) -> str:
    if api_key_header in api_keys:
        return api_key_header
    raise HTTPException(
        status_code=status.HTTP_401_UNAUTHORIZED,
        detail="Invalid or missing API Key",
    )


logging.info(f"Expected API Key: {API_KEY}")  # Log the expected API key


class ImageData(BaseModel):
    image_data: str
    image_name: str


@app.post('/image/upload')
async def upload_image(image_data: ImageData, api_key: str = Security(get_api_key)):
    collection.insert_one({
        'image_name': image_data.image_name,
        'data': image_data.image_data
    })
    return {
        'url': f'https://gpt-vision-webserver.replit.app/image/{image_data.image_name}?token={api_key}'
    }


if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)

代码的目的是有一个端点来上传图像,然后完成。以 URL 的形式返回图像的响应

为了方便和测试目的,我已在 Replit 上部署了此应用程序。

但是这里的问题是这样的:

Screenshot of the swagger UI response

Swagger UI

Replit screenshot

由于某种原因,即使我输入了正确的令牌,API 仍然会使用无效的密钥进行响应。我不知道发生了什么,因为令牌身份验证代码是从我的另一个项目复制粘贴的,我在其中使用完全相同的方法进行 API 密钥身份验证。

这段代码有问题,它是什么,我不知道。

注意:我不想使用其他身份验证方法,它需要通过 API 密钥 (另外,是的。此后我将更改 API 密钥。)

链接到我的 replit 代码:https://replit.com/@developeradmin1/Python

python fastapi swagger-ui replit
1个回答
0
投票

我修复了它,我实际上只需要在 mongodb atlas 帐户中启用某些网络访问即可。另外,API 密钥功能从来没有出现过问题,我只需删除部署并重做整个部署过程(因为我多次更改了 api 密钥)。 然后,又来了,一些内部服务器错误的东西。我使用上述解决方案解决了。

这是我的 TED 演讲,祝你有美好的一天。

© www.soinside.com 2019 - 2024. All rights reserved.