Menu Permissions
메뉴 시스템을 특징으로 하는 스프링 부트 예시를 소개하겠습니다. 이 예시는 jCasbin을 이용하여 메뉴 권한을 관리합니다. 최종적으로, 이는 메뉴 권한을 위한 미들웨어를 추상화하는 것을 목표로 하며, 이는 Casbin이 지원하는 다른 언어, 예를 들어 Go와 Python으로 확장될 수 있습니다.
1. 구성 파일
policy.csv 파일에서 역할 및 권한 관리를 설정하고, 메뉴 항목 간의 부모-자식 관계를 설정해야 합니다. 자세한 내용은 이 GitHub 저장소를 참조하십시오.
1.1 개요
policy.csv를 사용하면, 세밀한 접근 제어를 위해 역할 권한과 메뉴 구조를 유연하게 구성할 수 있습니다. 이 구성 파일은 다양한 메뉴 항목에 대한 다른 역할의 접근 권한, 사용자와 역할 간의 연관성, 그리고 메뉴 항목 간의 계층 관계를 정의합니다.
1.2 권한 정의 (정책)
- 정책 규칙: 정책은
p접두사로 정의되며, 역할(sub)과 그들의 메뉴 항목(obj)에 대한 권한(act)을 지정하고, 규칙의 효과(eft)를 지정합니다. 여기서allow는 권한이 부여되었음을 나타내고,deny는 거부되었음을 나타냅니다.
예시:
p, ROLE_ROOT, SystemMenu, read, allow는ROLE_ROOT역할이SystemMenu메뉴 항목에 대한 읽기 권한을 가지고 있음을 의미합니다.p, ROLE_ROOT, UserMenu, read, deny는ROLE_ROOT역할이UserMenu메뉴 항목에 대한 읽기 권한이 거부되었음을 의미합니다.
1.3 역할과 사용자 연관성
- 역할 상속: 사용자-역할 관계와 역할 계층 구조는
g접두사로 정의됩니다. 이를 통해 사용자는 하나 이상의 역할로부터 권한을 상속받을 수 있습니다.
예시:
g, user, ROLE_USER는 사용자user가ROLE_USER역할을 부여받았음을 의미합니다.g, ROLE_ADMIN, ROLE_USER는ROLE_ADMIN이ROLE_USER로부터 권한을 상속받았음을 의미합니다.
1.4 메뉴 항목 계층 구조
- 메뉴 관계: 메뉴 항목 간의 부모-자식 관계는
g2접두사로 정의되어, 메뉴 구조를 구성하는 데 도움이 됩니다.
예시:
g2, UserSubMenu_allow, UserMenu는UserSubMenu_allow가UserMenu