Ограничение журнала ошибок Laravel по IP-адресу

Если для параметра debug установлено значение true в app/config.php Laravel, существует ли способ ограничить результирующую страницу ошибок Whoops с трассировкой стека на определенные IP-адреса, а IP-адреса, не отображаемые в этом списке, будут отображаться в определенном виде?

Благодарю.

Не построен в нет.

Но вы, вероятно, могли бы реализовать это довольно легко, захватив все исключения и только повторное металирование после того, как вы сравните IP-адрес пользователя.

Поэтому в app/start/global.php вам нужно будет настроить «Обработчик ошибок приложений». В настоящий момент он фиксирует все исключения и просто записывает их с помощью Log::error . Таким образом, вы можете сравнить IP-адрес пользователей с массивом действительных IP-адресов:

 App::error(function(Exception $exception, $code) { Log::error($exception); $validIpAddresses = ['123.456.789.0', '321.654.987.0']; if (in_array(Request::getClientIp(), $validIpAddresses)) { throw $exception; } return View::make('error'); }); 

Файл config.php (или app/config/app.php ) является файлом PHP, как и любой другой.

Поэтому никто не мешает вам указывать

 'debug' => in_array($_SERVER['REMOTE_ADDR'], array('192.168.0.1','127.0.0.1')), 

что приведет к тому, что debug будет true с некоторых IP-адресов, но не с другими.

Обновление : если вы используете CLI, мы можем захотеть

 'debug' => array_key_exists('REMOTE_ADDR', $_SERVER) ? true /* Actually, whatever we want when going CLI */ : in_array($_SERVER['REMOTE_ADDR'], array( '192.168.0.1', /* List of allowed addresses */ '127.0.0.1' )) 

Вы даже можете проверить «пароль пользователя», встроенный в запрос браузера (помните, что он выходит в ясности, если вы не используете SSL, не используйте «важные» пароли).

 'debug' => (strpos($_SERVER['HTTP_USER_AGENT'], 'KLAATU-BARADA-NIKTO') > 0), 

а затем использовать, скажем, плагин Firefox, чтобы изменить User-Agent вашего браузера и добавить пароль. Тогда у вашего браузера будет отладка, но никто другой.