【问题标题】:Is it possible to disable an action in pre-dispatch?是否可以在预调度中禁用操作?
【发布时间】:2012-10-12 21:44:18
【问题描述】:

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

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

【问题讨论】:

    标签: zend-framework zend-controller


    【解决方案1】:

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

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

    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
    

    【讨论】:

    • 装了很多我需要的东西:)
    【解决方案2】:

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

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

    它替代了您当前的操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-11
      相关资源
      最近更新 更多