RBAC implementation

역할 검사는 role을 만드는 지점과 사용하는 지점을 분리해야 한다

콜백은 역할을 세션에 실어 주고, 라우트 경계는 그 값을 읽어 통과 여부만 판단한다.

역할을 만드는 쪽

  1. DB, IDP claim, 이메일 매핑 중 하나를 역할 출처로 정한다.
  2. jwt callback에서 token.role을 채운다.
  3. session callback에서 session.user.role로 넘긴다.

역할을 쓰는 쪽

  1. 서버 컴포넌트나 미들웨어에서 세션을 읽는다.
  2. 필요 역할과 현재 역할을 비교한다.
  3. 통과, 로그인 이동, 권한 없음으로 결과를 고정한다.
검사 위치좋은 사용처주의
서버 컴포넌트페이지 단위 상세 권한페이지마다 반복될 수 있다.
미들웨어경로 패턴 단위 공통 보호무거운 DB 호출은 피한다.
클라이언트 UI버튼 표시와 안내문최종 보안 경계로 두지 않는다.