[python] Flask-RESTful에서 세션과 쿠키를 이용한 사용자 인증 방법

Flask-RESTful은 파이썬의 Flask 프레임워크를 확장한 것으로, RESTful API를 개발하는 데 유용합니다. 이번 포스트에서는 Flask-RESTful을 사용하여 세션과 쿠키를 이용한 사용자 인증 방법에 대해 알아보겠습니다.

세션과 쿠키란?

세션(Session)은 웹 애플리케이션에서 클라이언트의 정보를 서버에 저장하는 것을 말합니다. 세션은 고유한 식별자로 클라이언트를 식별하고, 클라이언트 상태 정보를 유지할 때 사용됩니다. 세션은 서버 측에 정보를 저장하므로 보안이 좋고, 브라우저 종료 시 세션 데이터가 삭제되기 때문에 보안에 더 좋습니다.

쿠키(Cookie)는 클라이언트 측에 저장되는 작은 데이터 조각으로, 클라이언트와 서버 간의 상태 정보를 유지합니다. 쿠키는 클라이언트 브라우저에 저장되어 다음에 해당 사이트를 방문할 때 서버로 전송되어 사용됩니다. 쿠키는 저장 용량이 제한되어 있고, 사용자가 삭제할 수 있기 때문에 보안에 약합니다.

Flask-RESTful에서 사용자 인증 방법

Flask-RESTful에서 사용자 인증을 위해 세션과 쿠키를 함께 사용하는 방법은 다음과 같습니다.

  1. 사용자가 로그인을 한다.
  2. 서버는 사용자 정보를 확인하고, 세션 정보를 생성한다.
  3. 세션 정보를 쿠키로 클라이언트에게 전송한다.
  4. 클라이언트는 다음 요청에 쿠키를 포함하여 보낸다.
  5. 서버는 클라이언트의 쿠키를 확인하여 세션 정보를 얻는다.

아래는 Flask-RESTful에서 세션과 쿠키를 이용한 사용자 인증의 예시 코드입니다.

from flask import Flask, request, session, jsonify

app = Flask(__name__)
app.secret_key = 'your-secret-key'

@app.route('/login', methods=['POST'])
def login():
    username = request.json.get('username')
    password = request.json.get('password')
    
    # 사용자 인증 로직을 구현한다.
    
    # 사용자 정보를 세션에 저장한다.
    session['username'] = username
    
    return jsonify({'message': 'Logged in successfully'})

@app.route('/protected', methods=['GET'])
def protected():
    if 'username' in session:
        return jsonify({'message': 'Authenticated'})
    else:
        return jsonify({'message': 'Not authenticated'})

if __name__ == '__main__':
    app.run()

위 코드에서 /login 엔드포인트는 사용자 인증을 처리하고 세션에 정보를 저장합니다./protected 엔드포인트는 세션을 확인하여 사용자가 인증되었는지를 확인합니다.

이와 같이 Flask-RESTful에서 세션과 쿠키를 이용하여 사용자 인증을 구현할 수 있습니다.

참고 자료