¿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
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: