Я думаю, что лучшее, что вы можете надеяться на использование встроенной ACL-реализации Cake, это что-то вроде следующего:
cake acl create aro root public
cake acl create aro root registered
cake acl create aro registered administrators
(create acos using AclExtras)
cake acl grant registered controllers
cake acl grant public controllers
cake acl deny public controllers/MySecureController
cake acl deny public controllers/Widgets update
cake acl deny public controllers/Widgets delete
(все вышеперечисленное делается через оболочку для торта, но легко переводится навариант PHP)
По сути, вы можете использовать либо парадигму «по умолчанию отрицать» (как продемонстрировано в собственном учебнике ACL Cake), либо парадигму «разрешить по умолчанию», как указано выше.Какой бы метод вы ни выбрали, будет зависеть от того, как вы ожидаете, что приложение будет расти: будет ли большинство ваших контроллеров общедоступными, и только некоторые из них будут доступны только для администраторов, или большая часть вашего приложения будет ограничена общедоступными, если для них будет предоставлен определенный доступ?В любом случае вам все равно нужно либо предоставить, либо запретить доступ.
Обратите внимание на два ARO, созданные в root : public и зарегистрирован .В этой модели при создании дерева ARO обрабатывайте зарегистрированный так, как если бы оно было root - поместите все группы «реальных пользователей» под ним.Таким образом, вы можете использовать ACL как обычно для объектов в зарегистрированных , и вне этого будут существовать публичные пользователи.
Все, что сказано, ничто не останавливаетВы используете механизм аутентификации Cake и используете свой собственный метод контроля доступа.Вот пример: Приложение для простой аутентификации и авторизации . (ПРИМЕЧАНИЕ. Это написано для CakePHP 2.0, но понятия также применимы и к 1.3) .
РЕДАКТИРОВАТЬ -
После перечитыванияНа вопрос и другие ответы я понял, что вы больше нацелены на модель управления доступом на основе ролей, чем на традиционную модель «один на пользователя» встроенного компонента ACL.Вот несколько примеров расширения встроенного компонента аутентификации для RBAC:
ACL на основе ролей в CakePHP
Компонент CakePHP Auth: пользователи, группы, разрешения
Кроме того, эта статья из двух частей описываетподход к авторизации на основе ролей на основе базы данных, который можно применить к вашему приложению Cake.