Я уверен, что есть какой-то встроенный метод для этого где-то в ZF, но я ленив, поэтому я сделал это так:
Создайте свой собственный App_Controller_Action класс (create /library/App/Controller/Action.php). Расширьте все ваши контроллеры этого класса
В каждом из моих контроллеров я вызываю $ this -> _ initAuth (), функция вставлена ниже:
protected function _initAuth()
{
$auth = Zend_Auth::getInstance();
if (!$auth->hasIdentity() && strcmp($_SERVER['REQUEST_URI'], '/auth/login') <> 0)
$this->_redirect('/auth/login' . $_SERVER['REQUEST_URI']);
else
$this->_identity = $auth->getIdentity();
}
В моем AuthController я делаю следующее, чтобы убедиться, что моя форма указывает на полный URL:
$uri = str_replace('/auth/login','',$_SERVER['REQUEST_URI']);
if (strlen($uri) > 0)
$form->setAction($this->_helper->url('login') . $uri);
else
$form->setAction($this->_helper->url('login'));
Если логин подтверждается, я делаю следующее:
if (strlen($uri) > 0)
$this->_redirect($uri);
else
$this->_redirect('/');