NextAuth 라우트 보호

보호 검증은 경로별 예상 결과까지 고정한다

`/dashboard`, `/settings`, `/admin`, `/unauthorized`는 같은 로그인 검사처럼 보여도 차단 위치와 통과 조건이 다릅니다.

01

대시보드

서버 컴포넌트에서 `getServerSession`을 읽고 세션이 없으면 로그인 페이지로 보냅니다.

경로/dashboard
실패callbackUrl 포함 signin
02

설정 화면

`useSession`은 로딩, 비로그인, 로그인 상태를 UI에서 분리하는 보조 보호층입니다.

경로/settings
보호 검증 점검짧은 노출 가능성
03

관리자 영역

token/session role을 싣고, admin이 아니면 권한 없음으로 보냅니다.

경로/admin
실패/unauthorized
04

전역 매처

`middleware.ts` matcher는 보호 경로만 잡고 권한 판단은 분리합니다.

대상dashboard/profile/admin
통과token 존재 확인