[파이썬] Flask에서의 세션 저장소 구성

Flask는 매우 강력하고 유연한 웹 프레임워크이며, 세션을 사용하여 사용자 데이터를 관리할 수 있습니다. 세션은 사용자의 웹 브라우저와 웹 서버 간의 상태를 유지하는 데 사용됩니다. Flask는 기본적으로 세션 데이터를 서버 메모리에 저장하지만, 실제 배포 환경에서는 세션 데이터를 영구적으로 저장할 수있는 외부 저장소가 필요할 수 있습니다.

이 문서에서는 Flask에서 세션 저장소를 구성하는 방법을 알아보겠습니다. 기본적으로 Flask는 세션 데이터를 SESSION_COOKIE_NAME으로 정의된 쿠키에 저장합니다. 이 쿠키는 웹 브라우저에 저장되는데, 쿠키에 저장된 세션 데이터는 클라이언트가 다음 페이지를 요청할 때 함께 전송됩니다.

하지만 더 안전한 환경을 위해 세션 데이터를 외부 저장소에 저장하는 것이 권장됩니다. Flask는 다양한 외부 저장소를 지원하며, 가장 일반적인 저장소는 Redis, Memcached, 데이터베이스 등입니다. 아래는 Flask에서 Redis를 사용하여 세션 데이터를 저장하는 예제입니다.

Redis를 사용한 세션 저장소 구성 예제

먼저, Flask-Session 라이브러리를 사용하여 Redis 세션 저장소를 설정해야합니다. 다음과 같이 명령을 실행하여 Flask-Session 라이브러리를 설치하십시오:

pip install Flask-Session

그런 다음, Flask 애플리케이션에서 다음과 같이 설정을 추가하십시오:

from flask import Flask
from flask_session import Session
import redis

app = Flask(__name__)
app.config['SESSION_TYPE'] = 'redis'
app.config['SESSION_REDIS'] = redis.from_url('redis://localhost:6379')

# Flask-Session 초기화
Session(app)

위의 예제에서는 SESSION_TYPE을 ‘redis’로 설정하여 Redis 세션 저장소를 사용하도록 했습니다. 그리고 Redis 연결을 위해 SESSION_REDIS에 Redis URL을 전달했습니다. 원하는 대로 Redis URL을 변경하십시오.

이제 Flask 애플리케이션에서 세션을 사용할 수 있으며, 세션 데이터는 Redis에 저장됩니다. 세션 데이터에 접근하려면, Flask 애플리케이션의 뷰 함수에서 session 객체를 사용하면 됩니다. 세션 데이터는 딕셔너리 형태로 저장되며, 다음과 같이 접근할 수 있습니다:

from flask import session

@app.route('/')
def index():
    # 세션 데이터 읽기
    username = session.get('username')

    # 세션 데이터 설정
    session['username'] = 'John'

    # 세션 데이터 삭제
    session.pop('username', None)

    return 'Hello, {}'.format(username)

위의 예제에서 session.get() 함수를 사용하여 세션 데이터를 가져올 수 있습니다. session['key']를 통해 세션 데이터를 설정하고, session.pop()를 사용하여 세션 데이터를 삭제할 수 있습니다.

Flask에서 세션을 사용하는 방법과 세션 저장소를 구성하는 방법을 살펴 보았습니다. 보안 상의 이유로 세션 데이터를 외부 저장소에 저장하는 것이 중요하며, Redis와 같은 저장소를 사용하여 이를 구현할 수 있습니다. Flask-Session을 사용하여 세션 저장소를 설정하면, Flask 애플리케이션에서 편리하게 세션을 사용할 수 있습니다.