آموزش FastAPI با تورهام، قسمت بیستم – Login API using JWT Part 2
به بخش بیستم از آموزش FastAPI خوش آمدید. در این قسمت، به نحوه ایجاد یک API برای ورود و خروج با استفاده از JWT خواهیم پرداخت. با استفاده از JWT (JSON Web Token)، می توانیم اعتبار سنجی کاربران را بهبود بخشیده و امنیت را افزایش دهیم.
مرحله اول: ایجاد مدل UserSchema
ابتدا باید یک مدل برای کاربران ایجاد کنیم. این مدل شامل نام کاربری (username) و رمز عبور (password) است. به این مدل UserSchema گفته می شود.
import pydantic
class UserSchema(pydantic.BaseModel):
username: str
password: str
مرحله دوم: ایجاد تابع login
حال باید یک تابع جدید برای ورود کاربران ایجاد کنیم. این تابع با دریافت نام کاربری و رمز عبور از کاربر، یک توکن JWT برای آن ایجاد می کند. این تابع به صورت زیر است:
from fastapi import FastAPI, HTTPException
from jose import JWTError, jwt
from passlib.context import CryptContext
SECRET_KEY = "b18193fb349697863e32799f363a63cc6b56d34fc97f67acc60bdb9c748ade24"
ALGORITHM = "HS256"
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
def create_access_token(data: dict, expires_delta: datetime.timedelta):
to_encode = data.copy()
expire = datetime.datetime.utcnow() + expires_delta
to_encode.update({"exp": expire})
encoded_jwt = jwt.encode(to_encode, SECRET_KEY, algorithm=ALGORITHM)
return encoded_jwt
def verify_password(plain_password, hashed_password):
return pwd_context.verify(plain_password, hashed_password)
def get_password_hash(password):
return pwd_context.hash(password)
@app.post("/login/")
def login(user: UserSchema):
# بررسی اعتبار کاربر
user = fake_users_db.get(user.username)
if not user:
raise HTTPException(status_code=401, detail="Incorrect username or password")
if not verify_password(user.password, user.password):
raise HTTPException(status_code=401, detail="Incorrect password")
# ایجاد وبسایت
access_token_expires = datetime.timedelta(minutes=30)
access_token = create_access_token(
data={"sub": user.username}, expires_delta=access_token_expires
)
return {"access_token": access_token, "token_type": "bearer"}
مرحله سوم: آزمایش تابع login
حال می توانید تابع login را با استفاده از یک ابزار آزمایش API مانند Postman یا Insomnia آزمایش کنید. برای این کار به ادرس زیر بروید:
http://localhost:8000/docs
در صفحه ای که به شما نمایش داده می شود، روی دکمه “Try it out” کلیک کنید و اطلاعات کاربر را وارد کنید. سپس بشما یک توکن JWT میل شود که می توانید برای اعتبار سنجی استفاده کنید.
این است که چگونه ایجاد یک API برای ورود و خروج با استفاده از JWT کرد. این باعث بهبود امنیت سیستم و اعتبار سنجی کاربران می شود. امیدوارم که این آموزش برای شما مفید بوده باشد.
فوق العاده بود
ممنون از لطفتون
منتطر کش و میدلور می مونیم که با سبک باحال تدریس شما یاد بگیریم
زنده باد
great
اقا دمت گرم اگه بشه مباحث پیشرفته تری مثل ردیس رو هم بهش اضافه کنین خیلی خوب میشه