我是这部分编程的新手,我有几个问题。首先是我的项目。一侧有一个 Flutter 应用程序,另一侧有一个包含数据的 MS SQL Server。从逻辑上讲,我的设备上需要这些数据。我读到最好的方法是使用 FastAPI,它简单且性能良好,但我不确定安全性。我读过一些有关 OAuth2 的内容,但它看起来太多了,因为只有一个用户有权使用该数据(服务器所有者)。是否可以只使用一个简单的 api key 作为参数?像这样的东西...
from fastapi import FastAPI
from SqlServerRequest import SqlServerRequest
app = FastAPI()
@app.get("/openOrders/{key}")
async def openOrders(key):
if key == "myverysecurekey":
return "SQLDATA"
else
return "Wrong key"
Run Code Online (Sandbox Code Playgroud)
这种方式可行,但我不确定安全性你会说什么?
小智 5
我已经处理同样的问题有一段时间了。我不需要在标头中使用 oauth,而是需要一个简单的 X-API-Key。
您可以使用以下代码来做到这一点
from fastapi import FastAPI, Depends
from fastapi.security import APIKeyHeader
import os
os.environ['API-KEY'] = '1234'.
# You would use as an environment var in real life
X_API_KEY = APIKeyHeader(name='X-API-Key')
def api_key_auth(x_api_key: str = Depends(X_API_KEY)):
""" takes the X-API-Key header and validate it with the X-API-Key in the database/environment"""
if x_api_key != os.environ['API-KEY']:
raise HTTPException(
status_code=401,
detail="Invalid API Key. Check that you are passing a 'X-API-Key' on your header."
)
app = FastAPI()
@app.get("/do_something", dependencies=[Depends(api_key_auth)])
async def do_something():
return "API is working OK."
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5063 次 |
| 最近记录: |