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

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

Благодарю.

2 ответа

Решение

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

Но вы, вероятно, могли бы реализовать это довольно легко, захватывая все исключения и перезапуская только после того, как вы сравнили 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 вашего браузера и добавления пароля. Тогда ваш браузер будет иметь отладку, но никакой другой.

Другие вопросы по тегам