Я возвращаю ответ от onBootStrap () таким образом.
$app = $e->getApplication(); $em->attach(MvcEvent::EVENT_ROUTE, function($e) use ($app) { $response = $e->getResponse(); $response->setStatusCode(403); $jsonValue = json_encode(array( 'error' => 12345, 'message' => 'You are not authorized for this request', )); $response->setContent($jsonValue); return $response; }, PHP_INT_MAX);
Но проблема в том, что я получаю код статуса 200, даже если я передаю разные.
Я запускаю этот API от клиента Advanced rest API.
Прежде: вам необходимо прервать нормальный ход обработки запроса. См. Модуль BjyAuthorize. Он генерирует ошибку: https://github.com/bjyoungblood/BjyAuthorize/blob/master/src/BjyAuthorize/Guard/Route.php#L69 Здесь он обрабатывается: https://github.com/bjyoungblood/BjyAuthorize/blob /master/src/BjyAuthorize/View/UnauthorizedStrategy.php#L53
В методе onBootstrap вы можете добавить слушателя для события MvcEvent :: EVENT_DISPATCH_ERROR. Он будет проверять, является ли ошибка ошибкой Auth и необходимостью установить код состояния ответа и его содержимое. Код Auth вызывает событие MvcEvent :: EVENT_DISPATCH_ERROR и устанавливает «ошибку события» $ event-> setError (static :: ERROR)
После: Это не лучший вопрос, это не лучший ответ. Лучшим ответом будет «использование стандартных модулей». Тем не менее, существует такая вещь, как «предельная сложность системы». Знак того, что система достигла предела сложности, заключается в том, что пользователям проще написать собственный код, а не использовать стандарт. Однако есть объективная и субъективная сложность. Цель – стандартные модули не очень сложны. Тем не менее, они не задокументированы наилучшим образом. Поэтому я считаю, что мой ответ направлен на то, чтобы уменьшить сложность для вас субъективной стандартной системы, в данном случае – модуля BjyAuthorize. Вы можете указать свою собственную стратегию следующим образом: 'unauthorized_strategy' => 'MyModule \ Listener \ UnauthorizedStrategy'