diff --git a/main.py b/main.py index 0f52ef2..73afc73 100644 --- a/main.py +++ b/main.py @@ -138,8 +138,12 @@ except ImportError: app = FastAPI(title="CS Web Program") -# 세션 미들웨어 — dbx-main 과 동일한 SESSION_SECRET_KEY / SESSION_COOKIE_NAME 사용 시 -# 같은 도메인의 세션 쿠키를 그대로 읽을 수 있다 (SSO). +# 미들웨어 등록 순서 주의: +# Starlette 은 add_middleware 를 "반대 순서로" 적용한다 (마지막에 추가한 것이 가장 바깥). +# AuthGuardMiddleware 가 request.session 을 읽으려면 SessionMiddleware 가 +# 먼저 실행돼서 scope 에 session 을 주입해야 한다. +# 따라서 AuthGuard 를 먼저 추가 (내부) → Session 을 나중에 추가 (외부, 먼저 실행). +app.add_middleware(AuthGuardMiddleware) app.add_middleware( SessionMiddleware, secret_key=_require_session_secret(), @@ -149,8 +153,6 @@ app.add_middleware( max_age=int(os.getenv("SESSION_MAX_AGE", "28800")), path="/", ) -# 인증 가드 — 정적/헬스/콜백/로그인·로그아웃 외 모든 경로에 적용 -app.add_middleware(AuthGuardMiddleware) @app.get("/health/db")