0

我编写了一个带有 predispatch() 方法的插件来检查每个控制器请求的访问权限。我将插件制作为:

类 My_Plugin_Checklogin 扩展 Zend_Controller_Plugin_Abstract { public function 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() 。

但也不允许我登录。由于预调度方法,总是让我留在登录页面上。我必须如何设置预调度方法。

请帮忙。

4

1 回答 1

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
    }
}
于 2010-09-02T16:46:45.757 回答