Cómo restringir el acceso de usuarios desde la dirección IP en Laravel

Este tutorial demuestra cómo restringir el acceso de los usuarios en función de su dirección IP en Laravel. Aprenderá los conceptos básicos de las direcciones IP y cómo usar el middleware integrado de Laravel para bloquear o permitir el acceso a ciertos usuarios en función de su dirección IP. Lo guiaremos a través del proceso de configuración del middleware, cómo configurarlo para sus necesidades específicas y cómo probarlo. Al final del tutorial, tendrá una comprensión completa de cómo restringir de manera efectiva el acceso de los usuarios en función de la dirección IP, lo que le permitirá agregar una capa adicional de seguridad a sus aplicaciones web.

En este tutorial, crearemos un middleware como BlockIpMiddleware. Usaremos ese middleware en cada API y URL seguras. Así que vea a continuación los pasos sobre cómo completar esto:

  • Paso 1: Instalar Laravel 10
  • Paso 2: Conéctese a la base de datos
  • Paso 3: Crear un Middleware
  • Paso 4: registrar el software intermedio
  • Paso 5: use el software intermedio

Paso 1: Instalar Laravel 10

Primero, comience a descargar o instalar la nueva configuración de Laravel 10 en su terminal. Ejecute el siguiente comando:

composer create-project --prefer-dist laravel/laravel <Your App Name>

Paso 2: Conéctese a la base de datos

En este paso, vaya al directorio raíz de su proyecto, busque el .envarchivo y configure la credencial de la base de datos de la siguiente manera:

DB_CONNECTION=mysql 
DB_HOST=127.0.0.1 
DB_PORT=3306 
DB_DATABASE=<Database Name>
DB_USERNAME=<Database Username>
DB_PASSWORD=<Database Password>

Paso 3: Crear un Middleware

Siguiente paso, crear un middleware llamado clase  BlockIpMiddleware. Ejecute el siguiente comando:

php artisan make:middleware BlockIpMiddleware

Vaya a la  carpeta y abra el  archivo. Luego actualice el siguiente código en su   archivo: app/Http/Middleware BlockIpMiddleware.phpBlockIpMiddleware.php

<?php
namespace App\Http\Middleware;
use Closure;
class BlockIpMiddleware
{
    // set IP addresses
    public $blockIps = ['ip-addr-1', 'ip-addr-2', '127.0.0.1'];

    /**
     * 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(), $this->blockIps)) {
            return response()->json([
              'message' => "You don't have permission to access this website."
            ], 401);
        }

        return $next($request);
    }
}

Paso 4: registrar el software intermedio

Siguiente paso, registre el middleware, así que vaya  app/Http/ y abra  el  archivo. Y registre el middleware de la siguiente manera: Kernel.php

<?php
  
namespace App\Http;
  
use Illuminate\Foundation\Http\Kernel as HttpKernel;
  
class Kernel extends HttpKernel
{
    ....
  
    /**
     * The application's route middleware.
     *
     * These middleware may be assigned to groups or used individually.
     *
     * @var array
     */
    protected $routeMiddleware = [
        ....
        'blockIP' => \App\Http\Middleware\BlockIpMiddleware::class,
    ];
}

Paso 5: use el software intermedio

En este paso, cree una ruta y le mostrará cómo usar el middleware en el archivo de ruta. Abra  routes/web.phpel archivo y actualice el siguiente código:

<?php
  
use Illuminate\Support\Facades\Route;

use App\Http\Controllers\UserController;
   
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
    
Route::middleware(['blockIP'])->group(function () {
    Route::resource('users', UserController::class);
});

¡Feliz codificación!

1.00 GEEK