Pull to refresh

Comments 16

Спасибо за важные поправки, я их учел :-D

А вообще мы все иногда и ложим, и кладем и иногда засовываем…
Вместо плагина я бы посоветовал расширить класс Zend_Auth, чтобы он хранил Row (только если это действительно необходимо). Кстати, объект Row можно создать при помощи специальной функции из массива без выполнения запроса к базе.
Лично я бы не советовал этого делать. Если советуете, нужно раскрыть почему. Zend_Auth ничего не хранит, для хранения используется Storage, в моем примере явно это и указано Zend_Auth::getInstance()->getStorage()->write().

А зачем нужно $registry = Zend_Registry::getInstance(); в indexAction в контроллере?

И зачем использовать $el при определении формы?
$registry = Zend_Registry::getInstance();
В данном примере ненужен, поправил.
$el используется чисто для собственного удобства, можно просто писать
$this->getElement('password')->setRequred(true)…

Просто, далее идут декораторы, но в примере я их не добавлял а просто вычистил, т.к они не относятся к данному примеру.
UFO just landed and posted this here
была еще 1,7, в ней можно было делать как ini файл, так и из пхп файла. Я выбирал php формат из-за того что эклипс делал в нем подсветку. В новой 1,8 успешно пользуюсь ini файлом. Да и вообще все структурированее стало, и меньше хочется заниматься самодеятельностью :)
UFO just landed and posted this here
ну логаут тут проще, думаю можно в комменте рассказать.

Делаем логаут контроллер в indexAction все что нужно сделать

$auth->clearIdentity();//удаляем юзера из хранилища
Zend_Session::forgetMe();//очищаем «запомни меня»
Zend_Session::expireSessionCookie();//ну и сессию добить

Так как на сайте, что я разрабатываю можно постить картинки я сделал дополнительную защиту и добавил
route что бы логаут был по url — /logout/userName(конкретное имя юзера), что бы умники не вставляли в src для картинки путь к логауту не не случилась ситуация когда всех выкидывает.

Если есть вопросы я отвечу :)
UFO just landed and posted this here
А как делать произвольный запрос для авторизации, мне, например, надо выбрать email из другой таблицы для аутентификации?

т.е. в
    $authAdapter = new Zend_Auth_Adapter_DbTable(
            $dbAdapter,
            'Customer',
            'Login',
            'Password'
            //'HashBytes("md5",?) AND status = "OK"'
    );


* This source code was highlighted with Source Code Highlighter.


надо добавить left join Customer_Email on Customer.id = Customer_Email.CID, а для логина использовать не Login, а этот самый email?
думаю проще всего написать свой собственный auth адаптер.

Можно еще получить db select

$select = $adapter->getDbSelect();

$select->//сделать join

$adapter->authenticate();

этот способ сам лично не пробовал, так что не знаю будет ли работать.
вот как раз его сейчас буду пробовать, спасибо

PS сложно с Yii переходить :)
спасибо, получилось:
    $authAdapter = new Zend_Auth_Adapter_DbTable(
            $dbAdapter,
            'Customer',
            'e.Email',
            'Password'
    );

    $authAdapter->getDbSelect()->joinLeft(array('e' => 'Customer_Email'), 'Customer.ID = e.Customer_ID', 'Email');

    $authAdapter->setIdentity($userName)->setCredential($userPassword);


* This source code was highlighted with Source Code Highlighter.
Sign up to leave a comment.

Articles