在ZF2中如何在授权的情况下跳过控制器操作不成功

时间:2013-01-30 11:57:40

标签: rest controller authorization zend-framework2

我正在ZF2上实现REST API。现在我需要检查Module.php上的授权令牌,如果授权失败则返回错误。但我不知道如何从Module.php返回响应。

我编写代码来检查onBootstrap的DISPATCH事件中的授权。现在,如果授权失败,如何在不访问控制器的情况下从Module.php返回错误。因为只有exit函数/调用才能在不访问控制器的情况下返回。但在那种情况下,我没有得到任何回应。使用json_encode(数组)看起来不像标准,因为我已经启用了ViewJsonStrategy并在控制器中使用了JsonModel。

1 个答案:

答案 0 :(得分:4)

您可以通过让听众返回响应来缩短事件,例如......

public function onBootstrap(EventInterface $e)
{
    $eventManager = $e->getApplication()->getEventManager();
    // attach dispatch listener 
    $eventManager->attach('dispatch', function($e) {
        // do your auth checks...
        if (!$allowed) {
            // get response from event
            $response = $e->getResponse();
            // set status 403 (forbidden) 
            $response->setStatusCode(403);
            // shortcircuit by returning response
            return $response;
        }
    });
}