[python] Flask-RESTful에서 인증된 사용자 정보 관리하기

Flask-RESTful은 Python 웹 프레임워크인 Flask를 기반으로 한 RESTful API를 쉽게 개발할 수 있는 도구입니다. 이번 글에서는 Flask-RESTful을 사용하여 인증된 사용자 정보를 관리하는 방법에 대해 알아보겠습니다.

1. Flask-RESTful 설치하기

먼저 Flask-RESTful을 설치해야 합니다. 아래 명령어를 사용하여 설치할 수 있습니다.

pip install flask-restful

2. 인증 정보를 저장할 데이터베이스 설정하기

Flask-RESTful에서는 인증된 사용자 정보를 관리하기 위해 데이터베이스가 필요합니다. 예를 들어, SQLite 데이터베이스를 사용하려면 다음과 같이 설정할 수 있습니다.

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db'

db = SQLAlchemy(app)

3. User 모델 정의하기

사용자 정보를 저장하기 위해 User 모델을 정의해야 합니다. 아래 예시는 간단한 User 모델의 예입니다.

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(50), unique=True, nullable=False)
    password = db.Column(db.String(80), nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)

4. 인증된 사용자 정보 관리하기

Flask-RESTful에서 인증된 사용자 정보를 관리하는 방법은 다양합니다. 가장 일반적인 방법 중 하나는 JWT(Jason Web Token)를 사용하는 것입니다. JWT는 사용자 인증에 필요한 정보를 안전하게 전송하는 데 사용됩니다.

from flask import request
from flask_restful import Resource
from flask_jwt_extended import jwt_required, get_jwt_identity

class UserProfileResource(Resource):
    @jwt_required
    def get(self):
        current_user = get_jwt_identity()
        return {'username': current_user}, 200

    @jwt_required
    def put(self):
        current_user = get_jwt_identity()
        data = request.get_json()
        # 사용자 정보 업데이트 로직 추가
        return {'message': 'User profile updated'}, 200

위 예제에서 @jwt_required 데코레이터는 해당 엔드포인트에 접근하기 위해서는 JWT 인증이 필요하다는 것을 나타냅니다. get_jwt_identity() 함수를 사용하여 현재 사용자의 정보를 가져올 수 있습니다. 필요에 따라 사용자 정보 업데이트 로직을 추가할 수 있습니다.

마무리

위에서는 Flask-RESTful에서 인증된 사용자 정보를 관리하는 방법에 대해 알아보았습니다. Flask-RESTful은 사용자 인증과 관련된 다양한 기능을 쉽게 구현할 수 있도록 도와주는 강력한 도구입니다.

더 자세한 사용법은 Flask-RESTful과 Flask-JWT-Extended의 공식 문서를 참고하시기 바랍니다.