Teaching FastAPI with TorHam, Part 20 – Implementing Login API with JWT: Part 2

Posted by

آموزش FastAPI با تورهام، قسمت بیستم – Login API using JWT Part 2

آموزش 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 کرد. این باعث بهبود امنیت سیستم و اعتبار سنجی کاربران می شود. امیدوارم که این آموزش برای شما مفید بوده باشد.

0 0 votes
Article Rating
3 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
@mehdimojaradi
4 months ago

فوق العاده بود
ممنون از لطفتون
منتطر کش و میدلور می مونیم که با سبک باحال تدریس شما یاد بگیریم
زنده باد

@amirrezamohammadi284
4 months ago

great

@amirkonjkav5374
4 months ago

اقا دمت گرم اگه بشه مباحث پیشرفته تری مثل ردیس رو هم بهش اضافه کنین خیلی خوب میشه