¿Cómo proteger rutas en Laravel?

¿Cómo proteger rutas en Laravel? Laravel incluye servicios de autenticación y sesión integrados a los que se accede normalmente a través de las fachadas Auth y Session.

Estas funciones proporcionan autenticación basada en cookies para las solicitudes que se inician desde navegadores web y proporcionan métodos que permiten verificar las credenciales de un usuario y autenticar al usuario.

Proteger rutas con Auth

Al desarrollar un proyecto en laravel generalmente se requieren que se trabaje bajo 2 entornos:

El backend. – Es la parte de una página web o aplicación que se encarga de las operaciones que no son visibles para el usuario.

El frontend. – Es la parte de una aplicación o página web que los usuarios ven y con la que interactúan.

Por lo general, la sección de Backend es oculta al usuario visitante de nuestra web, en tal sentido se debe bloquear la visualización a través de un login e inicio de sesión.

Ahora, la pregunta del millón, ¿Como podemos bloquear estas páginas a los visitantes?

Formas de proteger rutas

  • Proteger rutas individuales en rutas
  • Proteger rutas en grupo usando (web.php)
  • Proteger rutas en controlador
  • Proteger rutas usando paquetes (Laratrust, spatie permission)
  • Proteger rutas individuales en rutas

Proteger rutas individuales en rutas

Si deseamos proteger rutas individuales podemos usar la siguiente instrucción ->middleware('auth') al final de cada ruta, veamos un ejemplo.

//Estados
Route::get('/dashboard/states', [EstadoController::class, 'index'])->name('states.index')->middleware('auth');

Proteger Rutas en grupo (web.php)

Una de las estrategias mas recomendadas es proteger las rutas usando grupos . A continuación veremos un ejemplo de uso.

Route::middleware('auth')->group(function () {
   // clients routes
   Route::get('/dashboard', 'ClientController@index')->name('dashboard');
   Route::get('/client/{id}', 'ClientController@show');
   Route::post('/store', 'ClientController@store');
   Route::put('/update/{id}', 'ClientController@update');
   Route::delete('/remove/{id}', 'ClientController@destroy')->name('destroy');
});

Proteger rutas en controlador

Otra forma de bloquear el acceso a una determinada pagina es aplicar middleware dentro de nuestro controlador haciendo uso de la función __construct(). Veamos un ejemplo de usabilidad.
class EstadoController extends Controller
{

  public function __construct()
  {
  $this->middleware('auth', ['except' => ['index', 'show']]);
  }

}

En el script anterior estamos asignando la autentificación a todas las rutas del controlador, excepto a las vistas INDEX y SHOW

En resumen, existen varias forma de bloquear ciertas paginas a nuestros usuarios y solo mostrar información a nuestros usuarios que han iniciado sesión en nuestro sitio web.

Existen otras formas de bloquear el acceso a ciertas paginas y es usando paquetes como ser:

Botón volver arriba
Esta web utiliza cookies propias para su correcto funcionamiento. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad