Intereting Posts
PHP: отображать самые последние изображения из каталога? Предупреждение: невозможно изменить информацию заголовка – заголовки, уже отправленные php error Изменение конфиденциальности старых сообщений Facebook с помощью Graph API Импорт календарей iCal в базу данных MySQL E_NOTICE: Насколько полезно ДЕЙСТВИТЕЛЬНО исправить все? PHP – Как удалить пустые записи массива рекурсивно? Измените HTML и PHP с помощью preg_replace Как настроить php для включения pdo и включить mysqli в CentOS? <select> выпадающее значение по умолчанию Обновить страницу после удаления jquery в codeigniter Объем объявленной функции внутри функции pcntl выполняет один и тот же код несколько раз, требуется помощь Каковы методы работы с точки зрения «Жирная модель, тощий контроллер» с Laravel Racquent ORM? Ошибка: ожидаемая доктрина \ ORM \ Query \ Lexer :: T_WITH, получившая 'ON' Использование переменных PHP внутри HTML-тегов?

как получить роль от Zend_Auth / Zend_ACL при использовании адаптера Doctrine? все вместе

Я использую Zend_Auth с проектом, использующим doctrine.I верю, что каждая перезагрузка выполняется правильно, и я могу войти в систему.

мой адаптер выглядит следующим образом:

class Abra_Auth_Adapter_Doctrine implements Zend_Auth_Adapter_Interface { protected $_resultArray; private $username; private $password; public function __construct($username, $password) { $this->username = $username; $this->password = $password; } //based on feedbacks as response authenticate has changed to this public function authenticate() { $q = Doctrine_Query::create() ->from("Abra_Model_User u") ->leftJoin("u.Role r") ->where("u.username=? AND u.password=?", array($this->username,$this->password)); $result = $q->execute(); if (count($result) == 1) { return new Zend_Auth_Result(Zend_Auth_Result::SUCCESS, $result->get("Mylibrary_Model_User"), array());//autoloaderNamespaces[] = "Mylibrary_" in application.ini } else { return new Zend_Auth_Result(Zend_Auth_Result::FAILURE, null, array("Authentication Unsuccessful")); } } 

мой Abra_Controller_Pluging_Acl выглядит так

 class Abra_Controller_Plugin_Acl extends Zend_Controller_Plugin_Abstract { public function preDispatch(Zend_Controller_Request_Abstract $request) { parent::preDispatch($request); $controller = $request->getControllerName(); $action = $request->getActionName(); $module = $request->getModuleName(); $auth = Zend_Auth::getInstance(); if($auth->hasIdentity()){ $identity = $auth->getIdentity(); $roles = $identity["Role"]; $role = $roles["name"]; $role = (empty ($role) || is_null($role))? "regular" : $role ; } else { $role = "guest"; } } 

теперь с Doctrine_Event Fatal error: spl_autoload () [function.spl-autoload]: Класс Doctrine_Event не может быть загружен. Я видел этот пост здесь, и мне интересно, как это повлияет на мое использование Zend_Session, и это правда, что apc.dll включен в моем php.thanks много для чтения этого

Related of "как получить роль от Zend_Auth / Zend_ACL при использовании адаптера Doctrine? все вместе"

Как получить роль: в вашем адаптере, при успешном входе в систему, вместо того, чтобы возвращать только поле имени пользователя, как насчет возврата всего объекта пользователя? Тогда все это будет доступно, когда вы Zend_Auth::getIdentity() .

Вопрос 1: Если вы рассматриваете контроллеры как ресурсы и правила ACL будут разными для каждого модуля, тогда имена ресурсов также должны отражать модуль. Это затронет проблему модулей с идентичными именами контроллеров.

Вопрос 2: Я не уверен, что правильно понимаю. Zend_Auth и его хранилище позаботятся о сохранении идентификатора uer в собственном пространстве имен сеанса. Однако я столкнулся с проблемой того, что делать, когда пользователь записывает изменения в db – скажем, пользователь изменяет свое полное имя в своем профиле во время сеанса входа в систему – и вы показываете это полное имя в шаблоне вашего сайта , вытащил из Zend_Auth::getIdentity() . Как пользователь, я ожидал бы, что изменение будет отражено в видимом интерфейсе, но изменение произошло только в db, а не в сеансе.

То, что я делал в прошлом, заключается в создании дополнительного адаптера auth, который извлекает новую запись пользователя и всегда возвращает успех. Когда пользователь обновляет свой профиль, я вызываю Zend_Auth::authenticate() используя этот тривиальный адаптер. Хранение сеансов обновляется, и все хорошо с миром.

[Этот подход почти наверняка является взломом, поэтому мне было бы интересно услышать альтернативные подходы. Я уверен, что я могу установить значение в хранилище сеансов напрямую, но когда я в последний раз его пробовал, я не мог заставить его работать. Так что прибегают к обходу дополнительного адаптера.]