fix(sso): 미들웨어 등록 순서 수정 — AuthGuard 가 session 을 읽을 수 있도록
Starlette 의 add_middleware 는 마지막에 추가한 것이 가장 바깥(먼저 실행). AuthGuardMiddleware 가 request.session 을 보려면 SessionMiddleware 가 먼저 scope 에 session 을 주입해야 한다. 따라서: app.add_middleware(AuthGuardMiddleware) # 안쪽 app.add_middleware(SessionMiddleware, ...) # 바깥쪽 (먼저 실행)
This commit is contained in:
@@ -138,8 +138,12 @@ except ImportError:
|
|||||||
|
|
||||||
app = FastAPI(title="CS Web Program")
|
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(
|
app.add_middleware(
|
||||||
SessionMiddleware,
|
SessionMiddleware,
|
||||||
secret_key=_require_session_secret(),
|
secret_key=_require_session_secret(),
|
||||||
@@ -149,8 +153,6 @@ app.add_middleware(
|
|||||||
max_age=int(os.getenv("SESSION_MAX_AGE", "28800")),
|
max_age=int(os.getenv("SESSION_MAX_AGE", "28800")),
|
||||||
path="/",
|
path="/",
|
||||||
)
|
)
|
||||||
# 인증 가드 — 정적/헬스/콜백/로그인·로그아웃 외 모든 경로에 적용
|
|
||||||
app.add_middleware(AuthGuardMiddleware)
|
|
||||||
|
|
||||||
|
|
||||||
@app.get("/health/db")
|
@app.get("/health/db")
|
||||||
|
|||||||
Reference in New Issue
Block a user