2015-04-08 2 views
0

Я пытаюсь аутентифицировать пользователя в своем приложении. Если пользователь не прошел проверку подлинности, что я пытаюсь сделать следующий кодПочему мой код ответа HTTP не возвращается в ZF2?

$eventManager = $e->getApplication()->getEventManager(); 
$eventManager->attach(MvcEvent::EVENT_ROUTE, function($e) use ($app) { 
    $response = $e->getResponse(); 
    $response->setStatusCode(401); 
    $response->setContent(json_encode(array(
      'message' => 'You are not authorised for this request', 
       'name' => 'Status Forbidden' 
    ))); 
    $app->getEventManager()->trigger(MvcEvent::EVENT_DISPATCH_ERROR, $e); 
      return $response; 
    }, PHP_INT_MAX); 

Почему я не в состоянии получить код 401 ответа HTTP, как определено в приведенном выше коде?

Обратный контент возвращается, как ожидалось.

+0

Попробуйте: $ this-> getResponse() -> setHttpResponseCode (401); , тогда отправьте свой ответ $ this -> _ helper-> json ($ result), где $ result - ответ и 401 - лучше для несанкционированного доступа. –

+0

это делается в файле Module.php. Я не могу получить $ this-> getResponse() напрямую, и нет метода setHttpResponseCode() для getResponse(). –

+0

эй @BhavikJoshi вы можете сказать, на какой версии zf2 вы работаете? – ins0

ответ

0

Попробуйте отправить ответ, прежде чем вернуть его и вызвать событие. Я думаю, что это возможно при замене вызова, кода ответа и содержимого.

$response->sendResponse(); 
+0

sendResponse() не найден .. –