[python] FastAPI를 사용한 인증과 권한 부여
FastAPI는 간단하고 빠른 웹 애플리케이션을 빌드할 수 있는 빠르게 성장하는 Python 웹 프레임워크입니다. 이번 포스트에서는 FastAPI를 사용하여 사용자 인증 및 권한 부여를 구현하는 방법에 대해 알아보겠습니다.
1. 사용자 모델 생성
먼저, 사용자 정보를 저장할 모델을 생성합니다. 이 예시에서는 User
모델을 사용하겠습니다.
from pydantic import BaseModel
class User(BaseModel):
username: str
password: str
email: str
# 추가 필드 정의 가능
2. 사용자 등록 및 로그인 엔드포인트 생성
다음으로, 사용자 등록과 로그인을 처리할 엔드포인트를 생성합니다. FastAPI는 데코레이터를 사용하여 엔드포인트를 정의합니다.
from fastapi import FastAPI, HTTPException
from fastapi.security import OAuth2PasswordBearer
app = FastAPI()
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
@app.post("/register")
def register_user(user: User):
# 사용자 등록 처리
return {"message": "User registered successfully"}
@app.post("/login")
def login_user(user: User):
# 사용자 인증 처리
return {"message": "User logged in successfully"}
3. 권한 부여
사용자의 권한을 관리하기 위해 권한 부여를 처리하는 함수를 작성합니다.
from functools import wraps
def check_permission(user: User):
# 사용자 권한 체크
pass
4. 권한이 필요한 엔드포인트 보호
사용자의 권한을 확인하여 보호가 필요한 엔드포인트에 권한을 확인하는 미들웨어를 적용합니다.
from fastapi import Depends
async def get_current_user(token: str = Depends(oauth2_scheme)):
# 사용자 토큰 확인
user = { "username": "user1", "password": "password1", "email": "user1@example.com" } # 테스트용 유저 정보
check_permission(user)
return user
@app.get("/protected")
async def protected_route(current_user: User = Depends(get_current_user)):
return {"message": "This is a protected route"}
결론
FastAPI를 사용하면 간단하게 사용자 인증과 권한 부여를 구현할 수 있습니다. 위 예시를 참고하여 FastAPI를 사용하여 안전하고 보안된 웹 애플리케이션을 구축해 보시기 바랍니다.
더 많은 정보를 원하시거나 실제 프로덕션 환경에 적용하기 위한 자세한 내용은 FastAPI 공식 문서를 참조하시기 바랍니다.