17. Cómo proteger rutas con expresiones regulares
En este capítulo, aprenderás cómo proteger rutas en Laravel 10 utilizando expresiones regulares. Las expresiones regulares son patrones que se utilizan para validar y filtrar datos. Te enseñaremos cómo utilizar expresiones regulares para restringir el acceso a ciertas rutas y mejorar la seguridad de tu aplicación Laravel.
5 comentarios
Inicia sesión para comentar
Comentarios:
-
Victor Arana Flores hace 1 año Destacado
En Laravel, puede restringir el formato de los parámetros de ruta utilizando el método where() en una instancia de ruta. Este método acepta el nombre del parámetro y una expresión regular que define cómo se debe restringir el parámetro. Por ejemplo:
Route::get('/user/{name}', function (string $name) { // ... })->where('name', '[A-Za-z]+'); Route::get('/user/{id}', function (string $id) { // ... })->where('id', '[0-9]+'); Route::get('/user/{id}/{name}', function (string $id, string $name) { // ... })->where(['id' => '[0-9]+', 'name' => '[a-z]+']);
Además, hay métodos auxiliares que le permiten agregar rápidamente restricciones de patrones a sus rutas. Algunos de los métodos auxiliares comunes son:Route::get('/user/{id}/{name}', function (string $id, string $name) { // ... })->whereNumber('id')->whereAlpha('name'); Route::get('/user/{name}', function (string $name) { // ... })->whereAlphaNumeric('name'); Route::get('/user/{id}', function (string $id) { // ... })->whereUuid('id'); Route::get('/user/{id}', function (string $id) { // })->whereUlid('id'); Route::get('/category/{category}', function (string $category) { // ... })->whereIn('category', ['movie', 'song', 'painting']);
Si la solicitud entrante no coincide con las restricciones del patrón de ruta, se devolverá una respuesta HTTP 404.
Si desea que un parámetro de ruta siempre esté restringido por una expresión regular dada, puede usar el método pattern(). Puede definir estos patrones en el método boot() de tu App\Providers\AppServiceProvider clase. Por ejemplo:
use Illuminate\Support\Facades\Route; /** * Bootstrap any application services. */ public function boot(): void { Route::pattern('id', '[0-9]+'); }
Una vez definido el patrón, se aplica automáticamente a todas las rutas que utilicen ese nombre de parámetro:
Route::get('/user/{id}', function (string $id) { // Only executed if {id} is numeric... });
-
Inescop hace 5 meses
No existe el archivo RouteServiceProvider, y pongo
Route::pattern('id', '[0-9]+');en el archivo AppServiceProvider y me da un error:
Method Illuminate\Routing\Route::pattern does not exist.
-
Jhan Carlos Garcia Cordova hace 5 meses
En versiones actuales de laravel, ya no trae “RouteServiceProvider”, para ese caso debes hacerlo en “AppServiceProvider.php” dentro de la “function boot()”.
así quedaría:
public function boot(): void
{
Route::pattern('id', '[0-9]+');
}
Y luego declaras :
use Illuminate\Support\Facades\Route;
con eso lo tienes solucionado. -
Inescop hace 5 meses
Gracias!
-
Julian David Jaramillo hace 4 meses
gracias
-
-
Marcos Romero hace 1 año
Tu curso esta genial hermano, solo una pequeña observación para los próximos curso que saque, trate de poner un poco de zoom para que se pueda ver mas claramente algo de código, de ahi todo genial, gracias por el curso y apoyo.
-
Victor Arana Flores hace 1 año
Hola Marcos, claro que si. Y de hecho voy a regrabar la primera parte de este curso.
Normalmente grababa mis cursos en mi laptop, con una pantalla pequeña, por lo cual cuando las personas veían el curso solian ver el codigo grande. Para este curso empece a grabarlo desde mi computadora, con una pantalla muchisimo más grande, y el codigo se veía pequeño (aun cuando tiene zoom) ahora cuando grabo si le pongo mas zoom aun, y ya se ve bien desde cualquier dispositivo.
-
-
Victor Roman Ortiz Abreu hace 2 años
hay que reconocer que has mejorado mucho desde que pusiste este mismo curso free hasta el momento, ya tiene un lenguaje mas formal en la logica de programacion, Felicidades!!!
-
Victor Roman Ortiz Abreu hace 2 años
hola, serias tan amable de cuando explique la teoria, pudieses bajar el mouse dos lineas para que pueda verse bien lo que usted explica, en el caso de [A-Za-z] tapa un poco y es molesto tener que repertir el fragmento del video por ese detalle, le agradesco mucho su apoyo y atención.
-
Victor Arana Flores hace 1 año
Hola Victor, claro. Trataré de corregir esos detalles.
-