2009-12-17 7 views
0

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

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

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

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

ответ

4

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

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^