我用predispatch()方法编写了一个插件来检查每个控制器请求的访问权限。我已经将插件设为:
类My_Plugin_Checklogin扩展Zend_Controller_Plugin_Abstract { 公共函数preDispatch(){
if (isset($_SESSION['Zend_Auth_Static'])) {
//no login
$request = $this->getRequest();
//the request
$request->setModuleName('default');
$request->setControllerName('index');
$request->setActionName('index');
//send to default/login/index
}
}
}
现在在每个控制器请求之前调用predispatch()。
但也不允许我登录。由于predispatch方法,总是让我登录页面。我如何设置predispatch方法。
请帮忙。
答案 0 :(得分:0)
对于特定控制器(和/或操作)跳过此插件的最简单方法可能是在插件preDispatch()
方法的开头添加条件
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
if ($request->getModuleName() == 'default'
&& $request->getControllerName() == 'login'
&& $request->getActionName() == 'index') {
return ;
}
if (isset($_SESSION['Zend_Auth_Static'])) {
// your code goes here
}
}