[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의 공식 문서에서 보다 자세한 정보를 확인할 수 있습니다.