Roles y permisos en aplicaciones web: Autenticación y autorización
Clase 14 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 implementa la autorización en una aplicación web?
La capacidad de un sistema para distinguir qué acciones pueden realizar los usuarios autenticados es crucial. En esta lección, exploramos cómo implementar esta lógica, diferenciando autenticación y autorización. Mientras la autenticación se encarga de identificar a los usuarios, la autorización determina qué permisos tienen. Comenzamos a construir el sistema observando los roles en una aplicación de manejo de contenido.
¿Cómo configuro roles de usuario en una aplicación?
-
Lista de administradores:
- El primer paso en nuestra implementación es crear una lista de administradores.
- Aunque normalmente esta lista viviría en un backend, por ahora se simula con un arreglo estático en JavaScript.
const adminList = ['Iris', 'Retaxmaster', 'Freddy']; -
Asignación de propiedad isAdmin:
- Verificamos si el usuario está en la lista de administradores al momento del login.
const isAdmin = adminList.some(admin => admin === user.username); user.isAdmin = isAdmin;
¿Cómo se utiliza la propiedad isAdmin en un componente?
Una vez determinado si el usuario es administrador, podemos condicionar la interfaz de usuario para mostrar u ocultar ciertas opciones:
-
Condicional en Blogpost:
- Se importa un hook de autenticación que nos permite verificar el estado y propiedades del usuario autenticado.
import { useAuth } from '../path/to/hooks'; -
Renderizado condicional de botones:
- Dependiendo de los permisos, se puede decidir si mostrar o no un botón para eliminar posteos para usuarios administradores.
if (userIsAdmin) { return <button>Eliminar blogpost</button>; }
¿Cómo permitir a los autores editar su propio contenido?
Además de los administradores, es razonable que los autores puedan modificar su propio contenido. Vamos a permitir esto mediante la siguiente lógica condicional:
-
Variable canDelete:
- Definimos una variable que determina si el usuario actual puede eliminar un blogpost, ya sea porque es administrador o porque es el autor del contenido.
const canDelete = user.isAdmin || (blogpost.author === user.username); -
Renderizado basado en
canDelete:- La siguiente lógica gestiona el renderizado del botón de eliminación dependiendo de
canDelete.
if (canDelete) { return <button>Eliminar blogpost</button>; } - La siguiente lógica gestiona el renderizado del botón de eliminación dependiendo de
¿Cómo puedo mejorar este sistema con múltiples listas de permisos?
El reto en este contexto es expandir la lógica para manejar múltiples roles, posiblemente con listas separadas para administradores, editores, y beta testers, cada una capaz de realizar diferentes acciones. Por ejemplo, los beta testers podrían tener acceso a funcionalidades exclusivas, mientras que los editores podrían modificar el contenido sin eliminarlo.
-
Listas múltiples:
- Crear listas para cada tipo de usuario con permisos especiales.
const adminList = ['Username1', 'Username2']; const editorList = ['Username3', 'Username4']; const betaTesterList = ['Username5', 'Username6']; -
Revisión de permisos:
- Añadir lógica para verificar la pertenencia de un usuario a cada lista y actuar en consecuencia.
Crear un sistema de autorización robusto no solo protege la integridad del contenido, sino que también permite a los usuarios una interacción más personalizada y segura con la aplicación. Experimente y adapte estos ejemplos a sus necesidades, ¡la práctica perfecciona!