Нужен ли Zend_Acl? - PullRequest
       22

Нужен ли Zend_Acl?

0 голосов
/ 17 декабря 2009

У меня есть система разрешений на основе ролей, в которой я не уверен, что Zend_Acl необходим, поэтому я хотел бы спросить, прав ли я.

Рассматриваемые веб-приложения не имеют отдельных экранов администратора, все контроллеры / действия доступны каждому. Поэтому я не могу представить, что я могу назвать «ресурсом» в такой открытой системе.

Но некоторые роли пользователей могут видеть сетки, не отфильтрованные по идентификатору пользователя, поэтому супер администраторы видят все данные, и "администраторы x" видят все данные "x".

Является ли система Zend_acl чрезмерной в этом случае? Без этого все было бы просто, я просто получил бы роль пользователя в init () и проверил ее в некоторых частях контроллера.

1 Ответ

4 голосов
/ 17 декабря 2009

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

На самом деле, в одном из моих приложений я использую ActionHelper для проверки роли пользователя. У помощника есть единственный метод requireRole(), который принимает требуемую роль в виде строки. Теперь, когда мне нужно ограничить действие, я просто вызываю этот вспомогательный метод в первую очередь. Если мне нужно ограничить весь контроллер, я помещаю вызов в метод init(). Недостатком является то, что контроль доступа не централизован.

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

Итак, используйте то, что подходит:)

...