laravel5.5で、IP制限をmiddlewareで実装してみた。
管理者画面にアクセスできるのは、本社IPだけにしたい!みたいな時に便利。
1, laravelで制限&認証と言えば、middlewareを使うのが一般的。
| 1 | php artisan make:middleware IPAuthMiddleware | 
2, 次にlaravelに登録(app/Http/Kernel.php)します。
通常のユーザ認証と同じように、指定したルーティングに対してだけIP制限を行う
protected $middleware = [];の方に登録すると、全てのルーティングに対して行う
| 1 2 3 | protected $routeMiddleware = [     'ip.auth' => 'App\Http\Middleware\IPAuthMiddleware', ]; | 
3, IPAuthMiddlewareの実装(IP制限)を書く
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <?php namespace App\Http\Middleware; use Closure; class IPAuthMiddleware {     /**      * Handle an incoming request.      *      * @param  \Illuminate\Http\Request  $request      * @param  \Closure  $next      * @return mixed      */     public function handle($request, Closure $next)     {         // 管理画面にアクセスできるIP         $admin_ip_address = "123.123.123.123";         // 本番稼働中(.envの値を読み込む。変化しない時はキャッシュクリアする)         if( config('app.debug') === false){             if($admin_ip_address !== \Request::ip()){                 die('このページは見れません');             }         }         return $next($request);     } } | 
4, web.phpにIP制限のかけたいURLを指定する
| 1 2 3 4 5 6 7 8 9 | // システム管理者向け画面(本社のみアクセス可能なIP制限)////////////////////////////////////////// Route::group(['prefix' => 'admin', 'middleware' => 'ip.auth'], function() {     Route::get('/',         function () { return redirect('/admin/home'); });     Route::get('login',     'Admin\LoginController@showLoginForm')->name('admin.login');     Route::post('login',    'Admin\LoginController@login')->name('admin.login'); }); // フォーム認証後の方にも忘れずに! Route::group(['prefix' => 'admin', 'middleware' => ['auth:admin', 'ip.auth']], function() { | 
これで完成!