2011-12-21 2 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로 리디렉션되고 변경되지만 리디렉션 루프가 생성됩니다. 문제가 아파치 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] 

답변

6

에 그 플러그인을 추가하지 마십시오 로그인/인증, 또는; 기준을

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

많은 감사합니다 chelmertz! – eforth

+0

@ 도울 수있어서 기쁘다! 답을 "옳은 것"으로 표시하여 "케이스 폐쇄"를하도록하십시오. – chelmertz

0

까지 확장하십시오. 로그인 페이지에 예외를 추가해야합니다. 그렇지 않으면 루프가 다시 발생하게됩니다.

로그인 페이지가 '로그인'및 '색인'작업이라는 컨트롤러에있는 경우 해당 페이지 및 양식을 처리 할 수있는 다른 페이지에 대한 예외를 추가해야합니다.

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

관련 문제