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