PROTECTED ROUTES

Next.js 라우트 보호는 어디서 차단할지 먼저 정해야 안정적이다

서버 컴포넌트, 미들웨어, 클라이언트 보호는 목적이 다르다. 콘텐츠 노출을 막을수록 서버 쪽으로 판단을 당긴다.

Server Component

페이지 렌더링 전에 세션을 확인한다. 보호 콘텐츠가 잠깐 보이는 문제를 줄인다.

getServerSession()

Middleware

여러 경로를 입구에서 공통 차단한다. 관리자 영역처럼 범위가 넓을 때 적합하다.

matcher: ["/admin"]

Client Guard

이미 렌더된 화면 안에서 UX를 보완한다. 보안의 주된 차단선으로 두지는 않는다.

useSession()
비공개 페이지서버에서 redirect
경로 묶음미들웨어 matcher
권한 표시클라이언트는 보조