آموزش FastAPI با تورهام، قسمت دوم – ورود با استفاده از JWT قسمت اول

Posted by

آموزش FastAPI با تورهام، قسمت بیشتم – Login using JWT part 1

آموزش FastAPI با تورهام، قسمت بیشتم – Login using JWT part 1

در این قسمت از آموزش FastAPI با تورهام به نحوه ایجاد سیستم ورود و خروج با استفاده از JWT می‌پردازیم.

مرحله اول: نصب و راه‌اندازی FastAPI و تنظیمات JWT

در این مرحله، ابتدا FastAPI را نصب و راه‌اندازی می‌کنیم. سپس تنظیمات مربوط به JWT را انجام می‌دهیم.


pip install fastapi
pip install uvicorn

سپس یک فایل به نام jwt_settings.py ایجاد کرده و تنظیمات JWT را در آن قرار می‌دهیم:


JWT_SECRET_KEY = "secret_key"
JWT_ALGORITHM = "HS256"
JWT_EXPIRATION = 3600

مرحله دوم: ساخت سیستم ورود و خروج با JWT

در این مرحله، یک سیستم ساده برای ورود و خروج کاربران با JWT ایجاد می‌کنیم.


from fastapi import FastAPI, Depends, HTTPException
from fastapi.security import OAuth2PasswordBearer
from jose import jwt

from jwt_settings import JWT_SECRET_KEY, JWT_ALGORITHM, JWT_EXPIRATION

app = FastAPI()

oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")

def create_access_token(data: dict, expires_delta):
    to_encode = data.copy()
    expire = datetime.utcnow() + expires_delta
    to_encode.update({"exp": expire})
    encoded_jwt = jwt.encode(to_encode, JWT_SECRET_KEY, algorithm=JWT_ALGORITHM)
    return encoded_jwt

@app.post("/token")
async def login_for_access_token(form_data: dict = Depends(oauth2_scheme)):
    # Check username and password from database
    user = form_data.get("username")
    password = form_data.get("password")

    if not user or not password:
        raise HTTPException(status_code=400, detail="Incorrect username or password")

    # Generate JWT token
    access_token = create_access_token(data={"sub": user}, expires_delta=JWT_EXPIRATION)

    return {"access_token": access_token, "token_type": "bearer"}

در این مرحله، یک سیستم ساده برای ورود و خروج کاربران با JWT را پیاده‌سازی کردیم. در قسمت بعدی از این آموزش، به ادامه توسعه این سیستم خواهیم پرداخت.

0 0 votes
Article Rating
6 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
@amirkonjkav5374
7 months ago

آقا این دوره دیگه ادامه نداره؟

@soheilramezani-ls4zv
7 months ago

میشه بزاری ادامشو؟

@rkm88216
7 months ago

کاش یا دوره نمیزاشتید یا وقتی میزارید تا اخر ادامه بدید شما وقتی نمیتونید یه کاری رو تا اخر تموم کنید چرا دوره میزارید؟

@sbj6173
7 months ago

این قسمت آخر بود؟

@SirhaBiT
7 months ago

Post installation آرچ
و تایلینگ ویندو منیجرم یه ویدیو میسازی❤

@Jkjk-pu2vt
7 months ago

از چه توزیعی استفاده میکنید ؟