Традиционный подход к управлению доступом к действиям контроллера заключается в создании ресурса (строкового идентификатора) для каждого / модуля / контроллера / действия, а затем проверки ACL в плагине контроллера.
В последнее время я обнаружил очень удобный Zend_Acl_Resource_Interface
, который можно использовать для управления доступом к любому классу, реализующему его. Таким образом, любая Модель, Форма или другой элемент приложения могут стать ресурсом ACL. Это довольно здравый подход, потому что таким образом ресурсы приложения становятся ресурсами ACL.
Это становится чрезвычайно легко со слушателями Doctrine, поэтому мне вообще не нужна дополнительная логика в контроллере.
Теперь я могу проверить ACL, например, всякий раз, когда создается какая-либо форма и в конечном итоге перенаправляется на страницу входа.
Но как я могу скрыть элементы Zend Navigation, которые используют ограниченные формы, модели и т. Д.
Нужен ли также традиционный подход, ориентированный на контроллеры? Нужен ли отдельный идентификатор ресурса для каждого элемента навигации? В чем же преимущество использования ACL на основе ресурсов?