Zend_Auth и сеанс базы данных SaveHandler - PullRequest
2 голосов
/ 04 апреля 2010

Я создал Zend_Auth адаптер, реализующий Zend_Auth_Adapter_Interface (аналогично адаптеру Падрейча ), и создал простой плагин ACL. Все работает нормально с обработчиком сеансов по умолчанию. Пока все хорошо.

В качестве следующего шага я создал пользовательский Session SaveHandler для сохранения данных сеанса в базе данных. Моя реализация очень похожа на эту из притчи-демо . Кажется, все работает нормально. Данные сеанса должным образом сохраняются в базе данных, объекты сеанса сериализуются, но аутентификация не работает , когда я включаю этот пользовательский SaveHandler.

Я отладил аутентификацию, и все работает нормально до следующего запроса, когда данные аутентификации теряются.

Я подозревал, что это как-то связано с тем, что я использую $adapter->write($object) вместо $adapter->write($string), но то же самое происходит со строками.

Я загружаю Zend_Application_Resource_Session в первом методе Bootstrap, как можно раньше.

Нужна ли Zend_Auth дополнительная конфигурация для сохранения данных в базе данных?
Почему подлинность теряется?

1 Ответ

0 голосов
/ 06 апреля 2010

Я нашел причину проблем.

Я использовал «данные» в качестве имени столбца. Сессия SaveHandler из притчи-демонстрации вызывала код, подобный следующему:

$string = 'test'
$doctrineModel->data  =  $string;
echo gettype($doctrineModel->data); // displays 'Array', not string as some would expect

Таким образом, данные, которые я хотел сохранить, были случайно преобразованы в массивы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...