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]
答案 0 :(得分:6)
请勿在login / auth,或上附加该插件;将标准扩展到
if (!Zend_Auth::getInstance()->getIdentity()
&& $this->getRequest()->getControllerName() != 'login'
&& $this->getRequest()->getActionName() != 'auth')
答案 1 :(得分: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');
}