是否可以在预发送中禁用操作?

时间:2012-10-12 21:44:18

标签: zend-framework zend-controller

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

有没有办法从preDispatch方法中禁用其中一个动作?因为我不需要此操作的授权。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我通常使用“空”控制器/动作来执行此操作:

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

它取代你当前的行动。