2011-12-21 3 views
4
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.Zend Framework redirect в плагине переднего контроллера вызывает переадресацию

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

ответ

6

Не добавлять этот плагин на Логин/аутентификации, или; продлить критерии до

if (!Zend_Auth::getInstance()->getIdentity() 
    && $this->getRequest()->getControllerName() != 'login' 
    && $this->getRequest()->getActionName() != 'auth') 
+0

большое спасибо chelmertz за помощь !!! – eforth

+0

@ я счастлив, что смогу помочь! Не стесняйтесь отмечать какой-либо ответ как «правильный», чтобы сделать «случай закрытым». – chelmertz

0

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

Итак, если ваша страница входа находится в контроллере под названием «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'); 
    } 
+0

Неужели это именно то, что я написал? За исключением того, что вы получили действие неправильно. – chelmertz

+0

Спасибо paulrichards19 за объяснение, почему я получаю цикл. – eforth

Смежные вопросы