


Cara melaksanakan pengesahan dan kebenaran permintaan 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.
- Pasang kebergantungan
Pertama, kita perlu memasang FastAPI dan kebergantungan yang sepadan. Ia boleh dipasang melalui arahan berikut:
$ pip install fastapi $ pip install uvicorn
- 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"}
- 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
Kemudian, kami mencipta konteks penyulitan kata laluan:
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
Seterusnya, kami menentukan model pengguna untuk mengesahkan pengguna:
durreeeKemudian, 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
Seterusnya, kami mentakrifkan fungsi untuk mengesahkan kelayakan pengguna:
fake_db = [ User(username="user1", password="password"), User(username="user2", password="password", disabled=True) ]
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
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
- 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"}]}
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
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'
Kita kemudian boleh menggunakan token akses yang kita dapat untuk mengakses titik akhir terhad:
{"access_token":"user1","token_type":"bearer"}
Kita harus mendapat respons seperti ini:
$ curl --request GET --url http://localhost:8000/items/ --header 'Authorization: Bearer user1'
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

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

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

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

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

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

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

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

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
