Как проверить доступ к проекту Laravel по IP-адресу

Ромчик
0

Фишки LaravelДоброго времени суток. В одном из моих проектов, мне потребовалось ограничить доступ к проекту по IP адресам. Да, можно не заморачиваться с Laravel и закрыть доступ из .htaccess. Что такое .htaccess вы можете прочитать в статье «Что такое .htaccess?», а как ограничить доступ к сайту я описывал в статье «Трюки .htaccess для WordPress». Но нужно было сделать, чтобы клиенту было легко добавлять разрешенные ip-адреса.

И так, приступим …

Создадим middleware:


php artisan make:middleware IPAccess

Создание middleware

Разрешенные ip адреса будем хранить в конфигурационном файле ip.php, который будет расположен в директории config.


<?php

return [

'127.0.0.1',

];

Адреса храним в конфигурационном файле для упрощения. В самом проекте, адреса хранятся в базе данных и управляются через админпанель.

Теперь давайте опишем наш middleware:


<?php

namespace App\Http\Middleware;

use Closure;

class IPAccess

{

/**

* Handle an incoming request.

*

* @param  \Illuminate\Http\Request  $request

* @param  \Closure  $next

* @return mixed

*/

public function handle($request, Closure $next)

{

if(!in_array($request->ip(), config('ip'))){

abort(403, 'Access denided.');

}

return $next($request);

}

}

Осталось только зарегистрировать наш middleware и применить для всех роутов. Для этого в файл app/Http/Kernel.php добавим в массив $middleware элемент:


\App\Http\Middleware\IPAccess::class,

Все. Теперь проверяем.

Доступ запрещен

Теперь в конфигурационный файл ip.php добавим ip адрес нашей машины (в моем случае это 192.168.10.1)


<?php

return [

'127.0.0.1',

'192.168.10.1',

];

Проверяем.

Доступ разрешен по IP

Как мы видим все работает.

Заключение.

Мы с вами создали middleware, который проверяет доступ к ресурсу по ip адресу. Список разрешенных ip адресов мы вынесли в конфигурационный файл ip.php. И затем зарегистрировали наш посредник в Kernel.php таким образом, чтобы он применялся ко всем роутам.

Понравилась статья? Поделись с друзьями.
  • Add to favorites
  • Добавить ВКонтакте заметку об этой странице
  • Twitter
  • Facebook
  • Мой Мир
  • LiveJournal
  • Одноклассники
  • Блог Я.ру
  • MySpace
  • FriendFeed
  • В закладки Google
  • Google Buzz
  • Яндекс.Закладки
  • Reddit
  • StumbleUpon
  • Technorati
  • del.icio.us
  • БобрДобр
  • LinkedIn
  • Memori.ru
  • Сто закладок
  • Blogger

©2012-2018 По всем вопросам обращайтесь через форму обратной связи

Яндекс.Метрика