แพ็คเกจการรับรองความถูกต้องตามคีย์ API สำหรับ fastapi มุ่งเน้นไปที่ความเรียบง่ายและความสะดวกในการใช้งาน:
sqlite หรือ postgres ในท้องถิ่นทำงานกับพารามิเตอร์ทั้งส่วนหัวและแบบสอบถามexample.env file เพื่อแสดงวิธีการใช้ตัวแปรสภาพแวดล้อมREADME.md เพื่อสะท้อนการเปลี่ยนแปลงmysql pip install fastapi_auth2
from fastapi import Depends , FastAPI
from fastapi_auth import api_key_router , api_key_security
app = FastAPI (
description = "FastAPI Auth is a package that provides authentication based API security with FastAPI and Postgres Database, SQLite Database or MongoDB Database" ,
title = "FastAPI Auth Example" ,
version = 1.0 ,
)
app . include_router ( api_key_router , prefix = "/auth" , tags = [ "_auth" ])
@ app . get ( "/unsecure" )
async def unsecure_endpoint ():
return { "message" : "This is a unsecure endpoint" }
@ app . get ( "/secure" , dependencies = [ Depends ( api_key_security )])
async def secure_endpoint ():
return { "message" : "This is a secure endpoint" }แอพที่ได้คือ:

เริ่ม API ของคุณและตรวจสอบบันทึกสำหรับคีย์ลับที่สร้างขึ้นโดยอัตโนมัติหากคุณไม่ได้ให้หนึ่งผ่านตัวแปรสภาพแวดล้อม

ไปที่ /docs บน API ของคุณและแจ้งรหัสลับนี้ในกล่อง Authorize/Secret header จุดสิ้นสุดของผู้ดูแลระบบทั้งหมดรองรับความปลอดภัยส่วนหัวเท่านั้นเพื่อให้แน่ใจว่าคีย์ลับไม่ได้ใช้ร่วมกันโดยไม่ได้ตั้งใจเมื่อแชร์ URL

จากนั้นคุณสามารถใช้ /auth/new เพื่อสร้างคีย์ API ใหม่

และในที่สุดคุณสามารถใช้คีย์ API นี้เพื่อเข้าถึงจุดสิ้นสุดที่ปลอดภัย

แน่นอนว่าคุณสามารถเข้าซื้อคีย์ API โดยอัตโนมัติผ่าน Python ด้วย requests และสอบถามจุดสิ้นสุดโดยตรง
หากคุณทำเช่นนั้นคุณสามารถซ่อนจุดสิ้นสุดจากเอกสาร API ของคุณด้วยตัวแปรสภาพแวดล้อม FASTAPI_AUTH_HIDE_DOCS
ตัวแปรสภาพแวดล้อม:
FASTAPI_AUTH_SECRET : คีย์ผู้ดูแลระบบลับ
FASTAPI_AUTH_HIDE_DOCS : ไม่ว่าจะซ่อนจุดปลายทางที่เกี่ยวข้องกับคีย์ API หรือไม่จากเอกสารประกอบ
FASTAPI_AUTH_DB_LOCATION : ตำแหน่งของไฟล์ฐานข้อมูล sqlite local
sqlite.db ในไดเรกทอรีที่กำลังทำงานโดยค่าเริ่มต้น FASTAPI_AUTH_AUTOMATIC_EXPIRATION : ระยะเวลาเป็นวันจนกระทั่งคีย์ API จะหมดอายุ
DATABASE_MODE : หากตั้งค่าเป็น postgres แพ็คเกจจะใช้ฐานข้อมูล postgres แทน sqlite
URI : ที่ตั้งของฐานข้อมูล Postgres
postgresql://postgres:postgres@localhost:5432/postgres โดยค่าเริ่มต้นDEV_MODE ถูกตั้งค่าเป็น False ดู CONTIBUTING.md สำหรับข้อมูลเพิ่มเติม
poetry install
poetry shellpre-commit installpytest อิมเมจนักเทียบท่าที่แนบมาใช้แอพทดสอบบน localhost:8080 พร้อม Secret Key TEST_SECRET เรียกใช้กับ:
docker-compose build && docker-compose up