SQL 데이터베이스를 저장소로 사용하는 웹 응용 프로그램에 대해 ACL 기반 권한 부여 시스템을 만들고 싶습니다.ACL을 플랫 식으로 변환
내 문제는 - 검색을 필터링하기 위해 ACL로 정의 된 인증 규칙을 사용하고 싶습니다. 이를 위해 ACL을 WHERE 절에서 사용할 수있는 평범한 부울 표현식으로 변환해야합니다.
내 ACL 시스템은 간단합니다. 모든 항목은 허용 또는 거부 중 하나이며 조건을 추가합니다. 목록은 위에서 아래로 스캔됩니다. 조건과 일치하는 첫 번째 항목이 적용됩니다. 그래서 예. 내가 같은 ACL이있는 경우 :
ALLOW x = 3
ALLOW x = 5
DENY true
을 내가 함께 필터링해야합니다 x = 3 OR x = 5
내가있는 경우 :
이DENY x = 3
DENY x = 5
ALLOW true
필터가 될 것입니다 NOT (x = 3 OR x = 5)
내가 그러나 나는 아직도 어떤 순서로든 DENY 및 ALLOW 규칙을 혼합하여 적용 할 수있는 보편적 인 변환 방법을 만드는 방법을 모릅니다. 그러나 은이 true로 평가되는 규칙이되어야한다고 가정 할 수 있습니다. ACL 상속을 통해 모든 목록의 끝에 DENY true
을 넣을 수 있습니다.
이 수수께끼를 풀어 주시겠습니까?