Zend Acl - модули, контроллеры, действия и модели - PullRequest
2 голосов
/ 12 июня 2011

Я потратил день на поиски учебников и ответов о том, как реализовать Zend_Acl здесь, на SO, как и на других сайтах. И у меня болит голова. : X

Я видел людей, использующих его, чтобы разрешить или запретить доступ к определенным контроллерам / действиям, и других, которые сказали, что этот путь неправильный, и что должен разрешать или запрещать доступ на основе моделей. Да, второе представляется возможным, однако, это означает, что для каждого контроллера мне нужна модель? Кажется, что, следуя второму варианту, я смогу блокировать доступ пользователей только в тот момент, когда он редактирует сообщение. Но я бы хотел запретить доступ к действию контроллера, который редактирует пост.

Если я хочу заблокировать доступ пользователя с ролью X к действию Y контроллера Z, как мне это сделать, если я буду следовать второму варианту?

Пример реального приложения будет очень кстати.

Эта информация может улучшить ваши ответы: Я использую Doctrine 2 в качестве ORM, и у меня есть модуль Admin. Фактическая структура моего приложения выглядит следующим образом:

application
  - MYAPP
    - configs
    - controllers
    - layouts
    - views
    - library
       - MYAPP ;This folder is in the include path
    - modules
       - admin

1 Ответ

5 голосов
/ 12 июня 2011

Признаюсь, что не являюсь Zend_Acl экспертом, но для меня суть использования Zend_Acl заключается в определении ролей, ресурсов и привилегий.Роли обычно довольно очевидны.И как только вы четко определили ресурсы, привилегии часто становятся очевидными.

Итак, для меня ключ - определить ресурс .

В ваших обстоятельствах это звучиткак вы явно определили контроллер в качестве ресурса.Если вам нужен более детальный контроль доступа, вы можете определить привилегии для действий.Это кажется достаточно гибким, так что даже контроллеры, которым не нужно использовать модели - возможно, статические страницы, которые должны показываться только зарегистрированным пользователям определенного типа и т. Д. - могут управляться ACL.

Могут быть случаи, когда вы обнаружите, что ваши ресурсы / привилегии «естественно» соответствуют моделям / методам.Но я не думаю, что вы должны чувствовать принуждение вашего ACL к этой парадигме, если контроллеры / действия более точно соответствуют вашему пониманию потока программ и требований ACL.

Не совсем прямой ответ на ваш вопрос.Больше похоже на совет быть верным своему собственному прочтению ситуации.

...