Проблема определения того, что делать с гостевым пользователем в Zend_Acl - PullRequest
0 голосов
/ 07 июня 2011

Я получаю следующую ошибку при каждом доступном просмотре для гостевого пользователя:

Примечание. Попытка получить свойство необъекта в /home/fiodorovich/public_html/gisele/library/Federico/Plugin/Acl.php в строке 35

строка, на которую он ссылается: '$ role = $ this -> _ auth-> getStorage () -> read () -> role;' в:

public function preDispatch (Zend_Controller_Request_Abstract $request)
{
    $role = $this->_auth->getStorage()->read()->role;

    if($role === null) {
        $role = self::DEFAULT_ROLE;
    }
    $action = $request->getActionName();
    $controller = $request->getControllerName();
    if($this->_acl->has($controller)) {
        if(!$this->_acl->isAllowed($role, $controller, $action)) {
            $request->setActionName('error');
            $request->setControllerName('error');
        }
    }
}

Я знаю, что это всего лишь уведомление, и что оно не будет отображаться в производственном процессе, поскольку ошибки будут отключены ... однако это отчасти вызывает у меня проблемы. Так, как я мог решить это?

1 Ответ

1 голос
/ 07 июня 2011

Используйте $this->_auth->hasIdentity() перед запросом данных из хранилища.

if ($this->_auth->hasIdentity()) {
    // user is logged in and we can get role
    $role = $this->_auth->getStorage()->read()->role;  
} else {
    // guest
    $role = self::DEFAULT_ROLE;
}
...