Zend_Auth или Zend_Acl в проверке на запись БД? - PullRequest
0 голосов
/ 09 февраля 2012

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

Сначала я реализовал это довольно хаотично, и теперь я думал сделать это так:

  • В начальной загрузке загружается плагин контроллера Auth.
  • В плагине контроллера я проверяю, есть ли у пользователя личность
  • В контроллере init () я загружаю свой помощник действия
  • В помощнике действий я загружаю Zend_Acl и проверяю, есть ли у пользователя полномочия для работы с этой конкретной книгой (проверьте, существует ли связь между этим пользователем и этой книгой), а также есть ли у него полномочия для выполнения этих действий на книга (возможно, он не сможет удалить ее).

Имеет ли это смысл? И где я должен хранить идентификатор книги? В Zend_Auth :: getInstance () -> getStorage ()?

Edit: И где мне хранить роль пользователя? Также в хранилище Zend_Auth?

1 Ответ

1 голос
/ 09 февраля 2012

Я думаю, что ваш подход имеет смысл.Я бы сохранил идентификатор книги в Zend_Session_Namespace, а пользователя - в хранилище Zend_Auth.Если пользователь, которого вы помещаете в хранилище, является объектом / моделью, он должен реализовать Zend_Acl_Role_Interface, чтобы он содержал метод getRoleId(), который возвращает роль пользователя.Таким образом, вы можете передать свой пользовательский объект напрямую любому методу ACL, которому требуется роль, и он может получить роль от объекта.

Если это имеет смысл, вы можете иметь свойство вашего пользовательского объекта под названием activeBookId или что-то в этом роде и сохраните там идентификатор книги, если кажется, что он может вписаться в объект пользователя.

...