Control de Acceso en Menú con Autenticación React
Clase 12 de 30 • Curso de React.js: Navegación con React Router
Contenido del curso
- 4

Instalación de React Router DOM 6 en un proyecto React
11:18 - 5

Uso de Hash Router en Aplicaciones Web con React Router DOM
07:26 - 6

Creación de Rutas Dinámicas con React Router DOM 6
10:41 - 7

Navegación en React Router: Uso de Link y NavLink
13:18 - 8

Rutas dinámicas con React Router DOM y useParams
15:36 - 9

Uso de useNavigate en React Router DOM para navegación dinámica
08:57 - 10

Uso de Outlet y Nested Routes en React Router DOM 6
06:56
- 11

Autenticación y Autorización en Apps con React Router y Hooks
23:48 - 12

Control de Acceso en Menú con Autenticación React
09:50 - 13

Protección de Rutas con React Router y Hooks
13:46 - 14

Roles y permisos en aplicaciones web: Autenticación y autorización
11:57 - 15

Retos avanzados en React: manejo de estado y composición de componentes
08:21 - 16

Mejorando la Redirección Post-Login en Aplicaciones Web
03:42 - 17

Roles y Permisos Avanzados en React Router v6
04:57
- 18

Migración de Todo Machine a React Router 6
11:33 - 19

Organización de carpetas y rutas en React con React Router DOM 6
18:40 - 20

Maquetación de Botón Editar en Lista de Tareas con React
12:19 - 21

Generación de IDs únicos para gestionar tareas en React
15:23 - 22

Migración de modales a rutas en React: implementación práctica
17:37 - 23

Editar ToDos en React con Custom Hook y URL Parameters
14:03 - 24

Mejora de la Experiencia del Usuario al Editar To Do's en React
21:55 - 25

Implementación de React Router en Proyectos Legacy
11:07
¿Cómo se mejora la navegación dependiendo del estado de autenticación?
Cuando construyes aplicaciones web uno de los pasos cruciales es manejar la autenticación y autorización de manera adecuada. En esta sesión, nos centramos en mejorar la navegación de nuestra aplicación para que se adapte al estado del usuario: si están autenticados o no. Esto asegura que los usuarios solo vean las rutas y páginas pertinentes según su sesión actual.
¿Qué error corregimos al ajustar las rutas?
En la clase anterior, desarrollamos un sistema básico de autenticación que, aunque funcional, presentaba un error de navegación. El objetivo aquí es asegurarnos de que nuestro menú no muestre opciones de acceso o cierre de sesión inconsistentemente. Queremos que, por ejemplo, la opción para "inicio de sesión" desaparezca si el usuario ya ha iniciado sesión, y que la opción de "perfil" no sea visible si el usuario no está autenticado. Aquí está la solución:
- Agregar propiedad 'private' a las rutas:
- Todas las rutas deberían tener por defecto la propiedad
private: false. - Se exceptúan rutas como el perfil, que deberían ser marcadas como
private: truepara que el sistema sea capaz de no mostrar estas páginas si el usuario no está autenticado.
- Todas las rutas deberían tener por defecto la propiedad
¿Cómo controlar la visibilidad de las rutas privadas?
Para hacer un seguimiento del estado de sesión del usuario, utilizamos un React Hook conocido como useAuth. Este nos proporciona información vital de si el usuario actualmente está loggeado, lo que nos permite condicionar la renderización de las rutas según este estado.
import { useAuth } from './useAuth';
// En el componente de menú
if (route.private && !auth.user) {
return null;
}
- Funciones del Hook
useAuth:auth.user: este objeto contiene información del usuario si está loggeado y esnullde lo contrario.- Gracias a esto podemos prevenir la renderización de rutas privadas cuando no hay un usuario autenticado.
¿Cómo mejoramos la lógica para las rutas públicas?
Una vez manejadas las rutas privadas, lo siguiente es no mostrar las rutas como el login si el usuario ya está autenticado. Para esto, etiquetamos estas rutas como publicOnly, lo que además hace que no se rendericen si el usuario ya está en el sistema.
if (route.publicOnly && auth.user) {
return null;
}
- Esto asegura que si el usuario ya se encuentra autenticado, las páginas destinadas al registro o inicio de sesión no sean visibles.
¿Qué más podemos optimizar?
La implementación también contempla la posibilidad de añadir lógica adicional para manejar estados inconsistentes donde el usuario cambia manualmente la URL para acceder a rutas que deberían estar protegidas de acuerdo a su estado de autenticación. Este manejo, por supuesto, requiere configuraciones adicionales en el servidor backend para ser completamente seguro.
Emplear estas prácticas no solo brinda una mejor experiencia de usuario, sino que también ayuda a mantener la integridad y seguridad de nuestra aplicación. ¡Ahora, te animo a implementar y ajustar estas prácticas a tus proyectos actuales o futuros!