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:
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>
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>
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);
}
}
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,
];
}
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!