2

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

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

4

1 回答 1

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;
        }
    });
}
于 2013-01-30T12:16:36.533 回答