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 인자를 사용하여 설정합니다.
'CoWithMe' 카테고리의 다른 글
숙취가 안된 코딩 그리고 장고와 DRF: 쿼리큘럼 추측 및 개인 학습 계획 (8) | 2024.07.14 |
---|---|
Cloudflare Workers에서 Python 지원: Pyodide와 WebAssembly로 서버리스 컴퓨팅 혁신 (75) | 2024.07.12 |
자기계발의 중요성 및 방법론 (85) | 2024.07.09 |
Flask vs FastAPI: 비동기 처리의 차이와 실제 적용 (85) | 2024.07.08 |
Flask와 FastAPI에서 PyMySQL과 SQLAlchemy 사용법 비교 (94) | 2024.07.05 |