Zend Framework перенаправление в плагин фронт-контроллера вызывает петлю перенаправления - PullRequest
4 голосов
/ 21 декабря 2011
class Ef_AppSecurity extends Zend_Controller_Plugin_Abstract
{
    public function preDispatch(Zend_Controller_Request_Abstract $request)
    {
        if (!Zend_Auth::getInstance()->getIdentity())
        {
            $redirect = new Zend_Controller_Action_Helper_Redirector();
            $redirect->gotoSimpleAndExit('login', 'auth');
        }
    }
}

Он перенаправляет и изменяет новый URL, однако в браузере создает цикл перенаправления.Мне интересно, может ли проблема быть связана с настройками apache mod_rewrite.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

Ответы [ 2 ]

6 голосов
/ 21 декабря 2011

Не добавлять этот плагин при входе в систему / авторизации, или ;расширить критерии до

if (!Zend_Auth::getInstance()->getIdentity()
     && $this->getRequest()->getControllerName() != 'login'
     && $this->getRequest()->getActionName() != 'auth')
0 голосов
/ 21 декабря 2011

Вы должны добавить исключение для страницы входа. В противном случае это будет также перенаправлено обратно на себя, вызывая цикл.

Так что, если ваша страница входа в систему находится в контроллере, называемом действием 'login' и 'index', вам нужно добавить исключение для этой страницы, и любая другая страница может обрабатывать форму.

    if (!Zend_Auth::getInstance()->getIdentity() 
        && $this->getRequest()->getControllerName() != 'login'
        && $this->getRequest()->getActionName() != 'index')
        )
    {
        $redirect = new Zend_Controller_Action_Helper_Redirector();
        $redirect->gotoSimpleAndExit('login', 'index');
    }
...