Route Guard
라우트 보호 실행 위치
보호된 라우트는 middleware.ts, 서버 컴포넌트,
클라이언트 UI가 같은 세션을 보더라도 서로 다른 시점에서 판단합니다.
경로 관문
matcher에 걸린 URL은 세션 토큰이 없으면 로그인으로
보냅니다.
서버 확정
getServerSession으로 사용자와 역할을 읽고 데이터 접근을
결정합니다.
민감 데이터
세션, 역할, 소유권이 맞을 때만 조회와 변경을 이어갑니다.
화면 안내
useSession은 로딩과 안내를 다루며 보안의 최종 경계는
아닙니다.
서버 판단이 최종 경계입니다
클라이언트에서 숨긴 UI는 우회될 수 있으므로 서버나 미들웨어에서 접근 결정을 내려야 합니다.
위치별 역할
middleware
공통 로그인 필요 경로를 빠르게 거릅니다.
server component
역할, 조직, 리소스 소유권을 데이터 조회 전에 확인합니다.
client guard
로딩 상태와 안내 문구를 보완하지만 직접 접근을 막지는
못합니다.