Совершенно очевидно, как смоделировать таблицу базы данных, которая будет действовать как список контроля доступа (ACL), когда вы имеете дело только с дискретными пользователями, которые имеют некоторый уровень доступа к дискретному ресурсу. Примерно так:
TABLE acl (
user_id INT,
resource_id INT,
access_type INT
)
... где access_type - это число, представляющее что-то вроде:
0 (или отсутствие записи для user_id и resource_id) означает отсутствие доступа
1 означает только чтение
2 означает полный контроль
Однако становится сложнее, когда у вас есть сценарии, например, когда пользователи могут быть членами одной или нескольких групп, а группы могут содержать другие группы. Тогда ресурс может быть папкой, содержащей другие ресурсы.
Кроме явно плохого подхода к выполнению целой группы рекурсивных запросов во время выполнения для определения уровня доступа, который пользователь должен иметь к ресурсу, как эти сценарии имеют тенденцию обрабатываться? Существуют ли общепринятые проекты для моделирования ACL, подобного этому?