2015-09-14 3 views
1

Я сейчас немного сижу здесь, и я хочу знать лучшее решение для обновления Identity из Zend_Auth.Zend_Auth update Identity

public function _initLoadSessionData() { 
    if (Zend_Auth::getInstance()->hasIdentity()) { 
     $userTbl = new Application_Model_User(); 
     $userData = $userTbl->getUserData(Zend_Auth::getInstance()->getIdentity()->ID); 

     $zendAuth = Zend_Auth::getInstance()->getIdentity(); 

     foreach ($userData as $key => $value) { 
      $zendAuth->$key = $value; 
     } 
    } 
} 

Это первая попытка, которую я сделал, и она работает очень хорошо. Я поместил эту функцию в Bootstrap, но я уверен, что это решение очень плохое (например, производительность), потому что оно обновляется каждый раз. Проблема в том, что я хочу обновить роли Zend_Acl, и ее необходимо мгновенно обновить. Спасибо за помощь ребята! :)

+0

Вы пробовали 'Zend FrontController Plugin' ?? –

+0

Моя версия работает очень хорошо, но я не знаю, хорошо это или если я должен ее переместить. Я это попробую! – Claicon

ответ

0

Вы используете плагин.

Создайте класс, который расширяет Zend_Controller_Plugin_Abstract и реализует метод preDispatch. Внутри него вы можете проверить обновления по ACL и перенаправить запрос другому контроллеру/действию, если что-то не разрешено.

Не забудьте зарегистрировать плагин на Bootstrap.php

Zend_Controller_Front::getInstance()->registerPlugin(new My_Plugin()); 
Смежные вопросы