[python] FastAPI에서 로그인 기능 구현하기

FastAPI는 높은 성능과 간편한 개발을 제공하는 웹 프레임워크 입니다. FastAPI를 사용하여 로그인 기능을 구현하는 것은 매우 간단합니다.

FastAPI 프로젝트 설정하기

먼저 FastAPI 프로젝트를 설정해야 합니다. 다음은 간단한 프로젝트 디렉토리 구조입니다.

project
├── main.py
├── api
│   └── __init__.py

사용자 인증

FastAPI에서는 사용자 인증을 구현하기 위해 fastapi.security 모듈을 사용합니다. 일반적으로 JWT(Json Web Tokens)를 사용하여 사용자를 인증합니다.

# main.py
from fastapi import Depends, FastAPI, HTTPException, status
from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
from passlib.context import CryptContext
from pydantic import BaseModel
from typing import Optional

app = FastAPI()

# user database
users_db = {
    "user1": {
        "username": "user1",
        "hashed_password": "fakehashedpassword"
    }
}

# token authentication
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")

# password hashing
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")

class User(BaseModel):
    username: str
    email: Optional[str] = None

class UserInDB(User):
    hashed_password: str

def verify_password(plain_password, hashed_password):
    return pwd_context.verify(plain_password, hashed_password)

def get_user(db, username: str):
    if username in db:
        user_dict = db[username]
        return UserInDB(**user_dict)

def authenticate_user(users_db, username: str, password: str):
    user = get_user(users_db, username)
    if not user:
        return False
    if not verify_password(password, user.hashed_password):
        return False
    return user

@app.post("/token")
async def login_for_access_token(form_data: OAuth2PasswordRequestForm = Depends()):
    user = authenticate_user(users_db, form_data.username, form_data.password)
    if not user:
        raise HTTPException(
            status_code=status.HTTP_401_UNAUTHORIZED,
            detail="Incorrect username or password",
            headers={"WWW-Authenticate": "Bearer"}
        )
    # create and return jwt token
    return {"access_token": "fakeaccesstoken", "token_type": "bearer"}

사용자 로그인

위의 코드 예제에서는 사용자의 정보를 확인하여 JWT 토큰을 반환하는 login_for_access_token 함수를 구현했습니다.

이제 FastAPI 서버를 실행하고 /token 엔드포인트에 POST 요청을 보내면 사용자가 제공한 사용자 이름과 비밀번호가 검증되고, 액세스 토큰이 반환됩니다.

이렇게하여 FastAPI에서 로그인 기능을 구현할 수 있습니다.

결론

FastAPI를 사용하여 로그인 기능을 구현하는 것은 간단하고 효과적입니다. 위의 코드를 참조하여 FastAPI에서 사용자 인증 및 로그인 기능을 구현해보세요.

FastAPI 공식 문서 - FastAPI의 공식 문서에서 보다 자세한 정보를 확인할 수 있습니다.