CoWithMe

초보자를 위한 Flask와 FastAPI의 세션 관리

이영훈닷컴 2024. 7. 11. 10:00
728x90

Flask의 세션 관리


Flask 애플리케이션 생성 및 Secret Key 설정

Flask에서 세션을 사용하려면 먼저 애플리케이션을 생성하고 secret_key를 설정해야 합니다. 이 secret_key는 세션 데이터를 안전하게 보호합니다.

from flask import Flask, session

app = Flask(__name__)
app.secret_key = 'supersecretkey'

 

세션에 데이터 저장

세션에 데이터를 저장하려면 session 딕셔너리를 사용합니다. 예를 들어, 사용자의 이름을 세션에 저장할 수 있습니다.

from flask import request

@app.route('/set_session/')
def set_session():
    session['username'] = request.args.get('username')
    return 'Session set'

 

웹 브라우저에서 http://localhost:5000/set_session/?username=John으로 접속하면 세션에 username이 저장됩니다.

세션에서 데이터 가져오기

세션에서 데이터를 가져오려면 session.get('key') 메서드를 사용합니다.

@app.route('/get_session/')
def get_session():
    username = session.get('username')
    return f'Logged in as {username}'

웹 브라우저에서 http://localhost:5000/get_session/으로 접속하면 세션에 저장된 username이 표시됩니다.


FastAPI의 세션 관리

 

FastAPI 애플리케이션 생성 및 SessionMiddleware 설정

FastAPI에서도 세션 관리를 위해 SessionMiddleware를 사용합니다. secret_key를 설정하여 세션 데이터를 보호합니다.

from fastapi import FastAPI
from starlette.middleware.sessions import SessionMiddleware

app = FastAPI()
app.add_middleware(SessionMiddleware, secret_key='supersecretkey')


세션에 데이터 저장

FastAPI에서는 Request 객체의 session 속성을 사용하여 세션에 데이터를 저장합니다.

from fastapi import Request

@app.get("/set_session/")
def set_session(request: Request):
    request.session['username'] = 'john'
    return 'Session set!'

 

웹 브라우저에서 http://localhost:8000/set_session/으로 접속하면 세션에 username이 저장됩니다.

 

세션에서 데이터 가져오기

FastAPI에서는 Request 객체의 session 속성을 사용하여 세션에서 데이터를 가져옵니다.

from fastapi import Request

@app.get("/get_session/")
def get_session(request: Request):
    username = request.session.get('username')
    return f'Logged in as {username}'

 

웹 브라우저에서 http://localhost:8000/get_session/으로 접속하면 세션에 저장된 username이 표시됩니다.

주요 차이점

 

  • 내장 기능:
    • Flask는 내장된 session 객체를 통해 세션을 관리합니다.
    • FastAPI는 Starlette의 SessionMiddleware를 사용하여 세션을 관리합니다.
  • 데이터 저장 방식:
    • Flask에서는 session 딕셔너리를 사용하여 데이터를 저장합니다.
    • FastAPI에서는 Request 객체의 session 속성을 통해 데이터를 저장합니다.
  • 암호화:
    • Flask와 FastAPI 모두 secret_key를 통해 세션 데이터를 보호합니다.
    • Flask에서는 애플리케이션의 secret_key 속성을 설정하고, FastAPI에서는 SessionMiddleware의 secret_key 인자를 사용하여 설정합니다.

코딩후 먼산 바라보기

 

728x90