我正在ZF2上实现REST API。现在我需要检查Module.php上的授权令牌,如果授权失败则返回错误。但我不知道如何从Module.php返回响应。
我编写代码来检查onBootstrap的DISPATCH事件中的授权。现在,如果授权失败,如何在不访问控制器的情况下从Module.php返回错误。因为只有exit
函数/调用才能在不访问控制器的情况下返回。但在那种情况下,我没有得到任何回应。使用json_encode(数组)看起来不像标准,因为我已经启用了ViewJsonStrategy并在控制器中使用了JsonModel。
答案 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;
}
});
}