Как получить роль: в вашем адаптере, при успешном входе в систему, вместо того, чтобы возвращать только поле имени пользователя, как насчет возврата всего объекта пользователя?Тогда все это будет доступно, когда вы вызовете Zend_Auth::getIdentity()
.
Вопрос 1. Если вы рассматриваете контроллеры как ресурсы, а правила ACL для каждого модуля будут разными, то имена ресурсов должны отражать модультакже.Это решит проблему модулей с одинаковыми именами контроллеров.
Вопрос 2: Я не уверен, что правильно понимаю.Zend_Auth и его хранилище позаботятся о сохранении идентичности пользователя в своем собственном пространстве имен сеанса.Однако я столкнулся с вопросом, что делать, когда изменяется запись пользователя в БД - скажем, пользователь изменяет свое полное имя в своем профиле во время сеанса входа в систему - и вы отображаете это полное имя в шаблоне своего сайта.вытащил из Zend_Auth::getIdentity()
.Как пользователь, я ожидал бы, что изменение будет отражено в видимом интерфейсе, но изменение произошло только в БД, а не в сеансе.
В прошлом я создал дополнительный адаптер аутентификации, который выбирает новую запись пользователя и всегда возвращает успех.Когда пользователь обновляет свой профиль, я звоню Zend_Auth::authenticate()
, используя этот простой адаптер.Хранилище сессий обновляется и все в порядке с миром.
[Этот подход почти наверняка является хаком, поэтому мне было бы интересно услышать альтернативные подходы.Я уверен, что могу установить значение в хранилище сеанса напрямую, но когда я в последний раз попробовал его, я не смог заставить его работать.Так что прибегаем к дополнительному адаптеру обходного пути.]