Rumah pembangunan bahagian belakang Tutorial Python Cara melaksanakan pengesahan dan kebenaran permintaan dalam FastAPI

Cara melaksanakan pengesahan dan kebenaran permintaan dalam FastAPI

Jul 29, 2023 pm 04:39 PM
pengesahan kebenaran Perlaksanaan dalam fastapi

Cara melaksanakan pengesahan permintaan dan kebenaran dalam FastAPI

Dengan perkembangan Internet, isu keselamatan rangkaian telah menarik lebih banyak perhatian. Apabila membangunkan aplikasi web, meminta pengesahan dan kebenaran adalah aspek penting dalam memastikan keselamatan aplikasi. Artikel ini akan memperkenalkan cara melaksanakan pengesahan permintaan dan kebenaran dalam rangka kerja FastAPI.

FastAPI ialah rangka kerja web berasaskan Python berprestasi tinggi yang menyediakan cara mudah dan berkuasa untuk mencipta API web. Ia menyepadukan perpustakaan Pydantic dan rangka kerja Starlette, menjadikan proses pembangunan lebih mudah dan cekap.

  1. Pasang kebergantungan

Pertama, kita perlu memasang FastAPI dan kebergantungan yang sepadan. Ia boleh dipasang melalui arahan berikut:

$ pip install fastapi
$ pip install uvicorn
Salin selepas log masuk
  1. Buat aplikasi asas

Seterusnya, kami mencipta aplikasi FastAPI yang mudah dan menambah beberapa laluan asas dan titik akhir. Dalam contoh ini, kami akan mencipta fail yang dipanggil "app.py" dan menyalin kod berikut ke dalamnya:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}
Salin selepas log masuk
  1. Tambah Pengesahan dan Kebenaran

Seterusnya, kami akan membincangkan cara menggunakan Fungsi keselamatan FastAPI untuk melaksanakan pengesahan permintaan dan kebenaran. Kami akan menggunakan OAuth2.0 sebagai mekanisme untuk pengesahan dan kebenaran.

Pertama, kami perlu mengimport modul dan kelas yang berkaitan:

from fastapi import Depends, FastAPI, HTTPException, status
from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
from passlib.context import CryptContext
Salin selepas log masuk

Kemudian, kami mencipta konteks penyulitan kata laluan:

pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
Salin selepas log masuk

Seterusnya, kami menentukan model pengguna untuk mengesahkan pengguna:

durreee

Kemudian, kami mencipta Ammy. pangkalan data dan tambah beberapa maklumat pengguna, untuk tujuan ujian:

class User:
    def __init__(self, username: str, password: str, disabled: bool = False):
        self.username = username
        self.password = pwd_context.hash(password)
        self.disabled = disabled

    def verify_password(self, password: str):
        return pwd_context.verify(password, self.password)

    def get_user(self, username: str):
        if self.username == username:
            return self
Salin selepas log masuk

Seterusnya, kami mentakrifkan fungsi untuk mengesahkan kelayakan pengguna:

fake_db = [
    User(username="user1", password="password"),
    User(username="user2", password="password", disabled=True)
]
Salin selepas log masuk

Kemudian, kami mentakrifkan fungsi untuk mendapatkan pengguna semasa:

def authenticate_user(username: str, password: str):
    user = get_user(username)
    if not user:
        return False
    if not user.verify_password(password):
        return False
    return user
Salin selepas log masuk

Akhir sekali, Kami menggunakan fungsi ini ke aplikasi FastAPI kami:

def get_current_user(token: str = Depends(oauth2_scheme)):
    credentials_exception = HTTPException(
        status_code=status.HTTP_401_UNAUTHORIZED,
        detail="Could not validate credentials",
        headers={"WWW-Authenticate": "Bearer"},
    )
    user = authenticate_user(token)
    if not user:
        raise credentials_exception
    return user
Salin selepas log masuk
  1. Menguji aplikasi

Kini, kami boleh menjalankan aplikasi dan mengujinya. Mulakan aplikasi dengan menjalankan arahan berikut:

oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/token")

@app.post("/token")
async def login(form_data: OAuth2PasswordRequestForm = Depends()):
    user = authenticate_user(form_data.username, form_data.password)
    if not user:
        raise HTTPException(
            status_code=status.HTTP_401_UNAUTHORIZED,
            detail="Invalid username or password",
            headers={"WWW-Authenticate": "Bearer"},
        )
    return {"access_token": str(user.username), "token_type": "bearer"}

@app.get("/items/")
async def read_items(current_user: User = Depends(get_current_user)):
    return {"items": [{"item_id": "Item 1"}, {"item_id": "Item 2"}]}
Salin selepas log masuk

Seterusnya, kita boleh menggunakan curl atau mana-mana alat klien HTTP untuk menguji aplikasi. Mula-mula, kita perlu mendapatkan token akses:

$ uvicorn app:app --reload
Salin selepas log masuk

Respons yang kita terima sepatutnya kelihatan seperti:

$ curl --request POST --url http://localhost:8000/token --header 'Content-Type: application/x-www-form-urlencoded' --data 'username=user1&password=password'
Salin selepas log masuk

Kita kemudian boleh menggunakan token akses yang kita dapat untuk mengakses titik akhir terhad:

{"access_token":"user1","token_type":"bearer"}
Salin selepas log masuk

Kita harus mendapat respons seperti ini:

$ curl --request GET --url http://localhost:8000/items/ --header 'Authorization: Bearer user1'
Salin selepas log masuk

Jadi, kami berjaya melaksanakan pengesahan dan kebenaran permintaan dalam aplikasi FastAPI.

Ringkasan:

Artikel ini menerangkan cara melaksanakan pengesahan permintaan dan kebenaran dalam rangka kerja FastAPI. Kami menggunakan ciri keselamatan FastAPI dan melaksanakan pengesahan dan kebenaran melalui mekanisme OAuth2.0. Dengan mengimport modul dan kelas yang berkaitan, mencipta konteks penyulitan kata laluan, menentukan model pengguna dan fungsi pengesahan, fungsi pengesahan yang diminta dilaksanakan. Akhir sekali, kami menggunakan fungsi ini pada aplikasi FastAPI dan mengujinya. Dengan langkah ini, kami boleh membina aplikasi web yang selamat dan boleh dipercayai.

Atas ialah kandungan terperinci Cara melaksanakan pengesahan dan kebenaran permintaan dalam FastAPI. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara Menggunakan Python untuk Mencari Pengagihan Zipf Fail Teks Cara Menggunakan Python untuk Mencari Pengagihan Zipf Fail Teks Mar 05, 2025 am 09:58 AM

Tutorial ini menunjukkan cara menggunakan Python untuk memproses konsep statistik undang -undang ZIPF dan menunjukkan kecekapan membaca dan menyusun fail teks besar Python semasa memproses undang -undang. Anda mungkin tertanya -tanya apa maksud pengedaran ZIPF istilah. Untuk memahami istilah ini, kita perlu menentukan undang -undang Zipf. Jangan risau, saya akan cuba memudahkan arahan. Undang -undang Zipf Undang -undang Zipf hanya bermaksud: Dalam korpus bahasa semulajadi yang besar, kata -kata yang paling kerap berlaku muncul kira -kira dua kali lebih kerap sebagai kata -kata kerap kedua, tiga kali sebagai kata -kata kerap ketiga, empat kali sebagai kata -kata kerap keempat, dan sebagainya. Mari kita lihat contoh. Jika anda melihat corpus coklat dalam bahasa Inggeris Amerika, anda akan melihat bahawa perkataan yang paling kerap adalah "th

Bagaimana saya menggunakan sup yang indah untuk menghuraikan html? Bagaimana saya menggunakan sup yang indah untuk menghuraikan html? Mar 10, 2025 pm 06:54 PM

Artikel ini menerangkan cara menggunakan sup yang indah, perpustakaan python, untuk menghuraikan html. Ia memperincikan kaedah biasa seperti mencari (), find_all (), pilih (), dan get_text () untuk pengekstrakan data, pengendalian struktur dan kesilapan HTML yang pelbagai, dan alternatif (sel

Penapisan gambar di python Penapisan gambar di python Mar 03, 2025 am 09:44 AM

Berurusan dengan imej yang bising adalah masalah biasa, terutamanya dengan telefon bimbit atau foto kamera resolusi rendah. Tutorial ini meneroka teknik penapisan imej di Python menggunakan OpenCV untuk menangani isu ini. Penapisan Imej: Alat yang berkuasa Penapis Imej

Cara Bekerja Dengan Dokumen PDF Menggunakan Python Cara Bekerja Dengan Dokumen PDF Menggunakan Python Mar 02, 2025 am 09:54 AM

Fail PDF adalah popular untuk keserasian silang platform mereka, dengan kandungan dan susun atur yang konsisten merentasi sistem operasi, peranti membaca dan perisian. Walau bagaimanapun, tidak seperti Python memproses fail teks biasa, fail PDF adalah fail binari dengan struktur yang lebih kompleks dan mengandungi unsur -unsur seperti fon, warna, dan imej. Mujurlah, tidak sukar untuk memproses fail PDF dengan modul luaran Python. Artikel ini akan menggunakan modul PYPDF2 untuk menunjukkan cara membuka fail PDF, mencetak halaman, dan mengekstrak teks. Untuk penciptaan dan penyuntingan fail PDF, sila rujuk tutorial lain dari saya. Penyediaan Inti terletak pada menggunakan modul luaran PYPDF2. Pertama, pasangkannya menggunakan PIP: Pip adalah p

Cara Cache Menggunakan Redis dalam Aplikasi Django Cara Cache Menggunakan Redis dalam Aplikasi Django Mar 02, 2025 am 10:10 AM

Tutorial ini menunjukkan cara memanfaatkan caching redis untuk meningkatkan prestasi aplikasi python, khususnya dalam rangka kerja Django. Kami akan merangkumi pemasangan Redis, konfigurasi Django, dan perbandingan prestasi untuk menyerlahkan bene

Bagaimana untuk melakukan pembelajaran mendalam dengan Tensorflow atau Pytorch? Bagaimana untuk melakukan pembelajaran mendalam dengan Tensorflow atau Pytorch? Mar 10, 2025 pm 06:52 PM

Artikel ini membandingkan tensorflow dan pytorch untuk pembelajaran mendalam. Ia memperincikan langkah -langkah yang terlibat: penyediaan data, bangunan model, latihan, penilaian, dan penempatan. Perbezaan utama antara rangka kerja, terutamanya mengenai grap pengiraan

Cara Melaksanakan Struktur Data Anda Sendiri di Python Cara Melaksanakan Struktur Data Anda Sendiri di Python Mar 03, 2025 am 09:28 AM

Tutorial ini menunjukkan mewujudkan struktur data saluran paip tersuai di Python 3, memanfaatkan kelas dan pengendali yang berlebihan untuk fungsi yang dipertingkatkan. Fleksibiliti saluran paip terletak pada keupayaannya untuk menggunakan siri fungsi ke set data, GE

Pengenalan kepada pengaturcaraan selari dan serentak di Python Pengenalan kepada pengaturcaraan selari dan serentak di Python Mar 03, 2025 am 10:32 AM

Python, kegemaran sains dan pemprosesan data, menawarkan ekosistem yang kaya untuk pengkomputeran berprestasi tinggi. Walau bagaimanapun, pengaturcaraan selari dalam Python memberikan cabaran yang unik. Tutorial ini meneroka cabaran -cabaran ini, memberi tumpuan kepada Interprete Global

See all articles