1

在我的控制器中,我有一个 preDispatch 方法,用于检查用户是否已登录。如果他没有,我将用户重定向到登录表单。

有什么方法可以禁用 preDispatch 方法中的某个操作?因为我不需要此操作的授权。

4

2 回答 2

3

在插件中,您可以检查是否正在调用该特定控制器和操作并允许请求继续。

您的插件中类似于以下内容的内容将起作用。

public function preDispatch(Zend_Controller_Request_Abstract $request) {
    // ...

    $controller = $request->getControllerName();
    $action     = $request->getActionName();

    if ($controller == 'login' && $action == 'login') {
        return ; // do not execute any more plugin code
    }

    // deny access and redirect to login form
于 2012-10-12T21:48:32.517 回答
0

我通常使用我的“空”控制器/动作来做到这一点:

public function preDispatch(Zend_Controller_Request_Abstract $request) {
if (!$logined){
 $request->setControllerName('empty')->setActionName('index');
return;
}
}

它替代了您当前的操作。

于 2012-10-13T12:00:47.807 回答