В моем entry
контроллере я установил:Zend_Auth - Когда я устанавливаю пространство имен пользовательского хранилища не существует, когда я обращаю на новый контроллер
Это работает:
$authadapter = new Test_Auth_Adapter_DbTable($db);
$auth = Zend_Auth::getInstance();
$result = $auth->authenticate($authadapter);
$data = $authadapter->getResultRowObject(null, 'password');
$auth->getStorage()->write($data);
$this->_redirector->gotoUrl('/main');
Это не:
$authadapter = new Test_Auth_Adapter_DbTable($db);
$auth = Zend_Auth::getInstance();
$auth->setStorage(new Zend_Auth_Storage_Session('Test_User')); //the only difference
$result = $auth->authenticate($authadapter);
$data = $authadapter->getResultRowObject(null, 'password');
$auth->getStorage()->write($data);
$this->_redirector->gotoUrl('/main');
Я вижу, что он установлен в переменной $ _SESSION var со всеми правильными данными, когда я использую отладчик, но после того, как данные установлены и я перенаправляюсь к нужному адресату, $ _SESSION var больше не является s и поэтому я не могу получить доступ к вещам!
страница перенаправлены на чеки AUTH с:
$this->auth = Zend_Auth::getInstance();
if (!$this->auth->hasIdentity()) {
$this->_redirector->gotoUrl('/entry');
}
Почему это не работает?
Это было сделано. Я предположил, что вызов setStorage() в действии контроллера логина подскажет ZF, что это конкретное пространство имен было тем, что существовало. Я не понимал, что должен был сказать это, чтобы написать его, а затем вручную сообщить об этом, чтобы проверить его (так как это автоматически с Zend_Auth, я предположил, что он был автоматическим с любым пространством имен, которое было установлено). – Lothar
В случае, когда мы устанавливаем его в bootstrap, как мы можем использовать это хранилище в контроллере для '$ authStorage = $ auth-> getStorage(); $ authStorage-> write ($ identity);'. пожалуйста, направляйте –