RBAC 신뢰 경계

RBAC 검증 위치

세션에 role을 넣은 뒤에도 페이지, 미들웨어, API Route Handler, Server Action이 같은 규칙을 읽어야 우회 요청을 막을 수 있습니다.

jwt()

로그인 시 역할 주입

DB의 user.role을 토큰에 담고 기본 역할은 user로 고정합니다.

token.role
session()

세션으로 전달

서버 컴포넌트와 클라이언트 훅이 같은 role 값을 읽게 합니다.

session.user.role
UI

화면은 보조 판단

편집 버튼 숨김은 UX이며, 요청 자체를 막는 보안 장벽은 아닙니다.

canEdit
Server

서버에서 재검증

Route Handler와 Server Action에서 role, authorId를 다시 확인합니다.

403 Forbidden
역할
/admin
/editor
게시글 수정
서버 검사
admin
허용
허용
전체 가능
role === "admin"
editor
차단
허용
작성 글 중심
role 또는 authorId 확인
user
차단
차단
본인 글만
session.user.id 비교