RBAC 세션 경로

역할 기반 라우트 보호

관리자 페이지를 막으려면 로그인 여부만 보지 말고, JWT 콜백에서 만든 role 값이 session 객체와 서버 보호 코드까지 이어지는지 확인합니다.

01

Provider 로그인

OAuth 응답에서 사용자 이메일이나 IDP claim을 읽을 수 있습니다.

02

jwt callback

token.role에 admin, user 같은 권한 값을 붙입니다.

03

session callback

session.user.role로 옮겨 서버와 클라이언트가 같은 값을 봅니다.

04

라우트 판정

서버 컴포넌트나 미들웨어에서 세션과 role을 함께 확인합니다.

05

허용 또는 차단

권한이 부족하면 /unauthorized로 보내고 콘텐츠 렌더링을 막습니다.

role 값을 잃어버리기 쉬운 위치

초기 로그인 user와 account가 있을 때만 역할 계산을 실행합니다.
토큰 갱신 이후 호출에서도 기존 token.role을 유지해야 합니다.
타입 확장 TypeScript에서는 session.user.role 타입을 별도로 선언합니다.