Невозможно использовать Zend_Auth и Zend_Session_SaveHandler_DbTable в Zend_Application - PullRequest
1 голос
/ 18 сентября 2010

Я использую Zend_Session_SaveHandler_DbTable для хранения моих сеансов в базе данных. У меня есть следующее в моем application.ini

resources.session.save_path = APPLICATION_PATH "/../data/sessions"
resources.session.use_only_cookies = true
resources.session.remember_me_seconds = 864000
resources.session.saveHandler.class = "Zend_Session_SaveHandler_DbTable"
resources.session.saveHandler.options.name = "session"
resources.session.saveHandler.options.primary.session_id = "session_id"
resources.session.saveHandler.options.primary.save_path = "save_path"
resources.session.saveHandler.options.primary.name = "name"
resources.session.saveHandler.options.primaryAssignment.session_id = "sessionId"
resources.session.saveHandler.options.primaryAssignment.save_path = "sessionSavePath"
resources.session.saveHandler.options.primaryAssignment.name = "sessionName"
resources.session.saveHandler.options.modifiedColumn = "modified"
resources.session.saveHandler.options.dataColumn = "session_data"
resources.session.saveHandler.options.lifetimeColumn = "lifetime"
resources.session.saveHandler.options.userIdColumn = "user_id"

Сессии, похоже, правильно сохраняются в базе данных.

Проблема в том, что когда я вызываю Zend_Auth :: getInstance () -> hasIdentity () в приложении, в конечном итоге он вызывает Zend_Session :: start (true), что приведет к ошибке:

Неустранимая ошибка: необработанное исключение 'Zend_Session_Exception' с сообщением 'сессия уже была запущена session.auto-start или session_start ()' в C: \ Program Files (x86) \ Zend \ Apache2 \ htdocs \ myapp \ library \ Zend \ Session.php: 462 Трассировка стека: # 0 C: \ Program Files (x86) \ Zend \ Apache2 \ htdocs \ myapp \ library \ Zend \ Session \ Namespace.php (143): Zend_Session :: start (true) # 1 C: \ Program Files (x86) \ Zend \ Apache2 \ htdocs \ myapp \ library \ Zend \ Auth \ Storage \ Session.php (87): Zend_Session_Namespace -> __ construct ('Zend_Auth') # 2 C: \ Program Files ( x86) \ Zend \ Apache2 \ htdocs \ myapp \ library \ Zend \ Auth.php (91): Zend_Auth_Storage_Session -> __ construct () # 3 C: \ Program Files (x86) \ Zend \ Apache2 \ htdocs \ myapp \ library \ Zend \ Auth.php (141): Zend_Auth-> getStorage () # 4 C: \ Program Files (x86) \ Zend \ Apache2 \ htdocs \ myapp \ application \ modules \ default \ views \ scripts \ layout.phtml (29): Zend_Auth-> hasIdentity () # 5 C: \ Program Files (x86) \ Zend \ Apache2 \ htdocs \ myapp \ library \ Zend \ View.php (108): include ('C: \ Prog в C: \ Program Files ( x86) \ Zend \ Ap ache2 \ htdocs \ myapp \ library \ Zend \ Session.php в строке 462

, поскольку Zend_Session_SaveHandler_DbTable уже начал сеанс. Я думал, что Zend_Session_SaveHandler_DbTable автоматически заставит Zend_Auth хранить информацию о сеансе в базе данных.

Есть что-то, что я здесь упускаю или неправильно настроил?

1 Ответ

0 голосов
/ 19 сентября 2010

документация (http://framework.zend.com/manual/en/zend.application.available-resources.html#zend.application.available-resources.session) неверна для настройки обработчика сохранения в application.ini

, это должно быть:

resources.session.save_path =APPLICATION_PATH "/../data/sessions" resources.session.use_only_cookies = true resources.session.remember_me_seconds = 864000 resources.session.saveHandler.class = "Zend_Session_SaveHandler_DbTable" resources.session.saveHandler.options.name ".session.saveHandler.options.primary [] = "session_id" resources.session.saveHandler.options.primary [] = "save_path" resources.session.saveHandler.options.primary [] = "name" resources.session.saveHandler.options.primaryAssignment [] = "sessionId" resources.session.saveHandler.options.primaryAssignment [] = "sessionSavePath" resources.session.saveHandler.options.primaryAssignment [] = "sessionName" resources.session.saveHandler.options.modifiedColumn = "updated"resources.session.saveHandler.options.dataColumn =" session_data "resources.session.saveHandler.options.lifetimeColumn = "life"

Я отправил вопрос ZF: http://framework.zend.com/issues/browse/ZF-10471

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