Autenticación en Vue.js con JSON Web Tokens (JWT)
Clase 53 de 53 • Curso Profesional de Vue.js 2
Contenido del curso
- 3

Herramientas esenciales para desarrollar con BioJS y NodeJS
06:13 - 4

Creación de una Aplicación Vue.js con CLI y Webpack Simple
12:50 - 5

Configuración y uso de Webpack en proyectos JavaScript
10:38 - 6

Configuración y uso de Babel para compatibilidad JavaScript
05:06 - 7

Configuración de eSlimt con EstándarJS y Webpack
15:34 - 8

Integración de SaaS y Bulma en Aplicaciones Vue.js
06:18 - 9

Configuración de Pag para optimizar el workflow de desarrollo HTML
04:23 - 10
Diseño de Mockups: Práctica y Colaboración en Comunidad
00:20 - 11
Creación de Vistas con Mockups y Vue.js
00:32
- 12

Expresiones en Vue: Manipulación Dinámica del DOM
03:49 - 13

Directivas de Vue: Uso y Funciones Principales
06:22 - 14

Data Binding y Directivas en Vue: bmodel y bevined
04:11 - 15

Propiedades Computadas en JavaScript: Creación y Uso Práctico
04:13 - 16

Uso de Watchers en Biomóvil para Gestión de Cambios de Propiedades
02:25 - 17

Manipulación de Eventos y Métodos en Aplicaciones Web
06:12 - 18

Creación de Interfaz con Vue.js y Framework CSS Bulma
19:03 - 19
Manipulación del DOM con Vue.js: Práctica y Ejercicios
03:00
- 23

Creación y Registro de Componentes en Vue.js
08:46 - 24

Creación de Componentes en Vue.js con Bulma para Platzi Music
09:50 - 25

Reactividad y Virtual DOM en Vue.js: Conceptos y Soluciones
06:14 - 26

Ciclo de Vida de Componentes en Vue.js: Hooks y Ejecución de Código
05:38 - 27

Comunicación entre Componentes en Vue.js: Props y Eventos
23:27 - 28

Comunicación entre Componentes en Vue: Eventos de Hijo a Padre
12:04 - 29

Uso de Slots para Inyección Dinámica de HTML en Componentes Vue
13:42 - 30

Comunicación entre Componentes Vue con Event Bus y Plugins
19:19
- 39

Gestión de Estados Centralizados con la Librería BuX
03:41 - 40

Integración de VueX y arquitectura Flux en Vue.js
17:32 - 41

Mutaciones en Vuex: Gestión y Actualización del Estado Reactivo
08:16 - 42

Uso de Getters en Vuex para Acceso Personalizado de Estado
07:35 - 43

Acciones asincrónicas en Vuex: cómo implementarlas y utilizarlas
07:55 - 44

Integración de VueX y Babel en PlatziMusic
26:37
¿Por qué usar tokens en aplicaciones Vue.js?
La autenticación en aplicaciones Vue.js se ha convertido en un tema crucial en el desarrollo web moderno, y uno de los métodos más efectivos y populares es a través del uso de tokens, específicamente JSON Web Tokens (JWT). Estos tokens son esenciales porque permiten una autenticación sin estado, lo que significa que no dependen de una sesión almacenada en el servidor. Esto hace que los tokens sean ideales para arquitecturas RESTful, donde cada solicitud HTTP es independiente y contiene toda la información necesaria para autenticar al usuario.
¿Cuáles son las ventajas de los JSON Web Tokens?
- Desacoplamiento y Autonomía: Los tokens permiten a las aplicaciones funcionar de manera desacoplada, lo que significa que no es necesario ejecutar acciones previas para procesar una solicitud.
- Escalabilidad: Al no almacenar sesiones en el servidor, es más sencillo escalar horizontalmente las aplicaciones, sin preocuparnos por compartir información entre instancias de servidor.
- Seguridad Autocontenida: JWT es un método de autenticación seguro que almacena información del usuario dentro del mismo token, facilitando así el acceso a datos relevantes sin solicitudes adicionales.
- Compatibilidad con JSON: Dado que los JSON Web Tokens están escritos en JSON, es sencillo para cualquier desarrollador JavaScript trabajar con ellos.
¿Cómo se estructura un JSON Web Token?
Un JSON Web Token consta de tres partes codificadas en Base64, separadas por puntos:
-
Header (Encabezado): Incluye el tipo de token (JWT) y el algoritmo de cifrado utilizado, por ejemplo, HS256.
{ "alg": "HS256", "typ": "JWT" } -
Payload (Cuerpo): Contiene las declaraciones sobre el usuario y datos adicionales que queramos almacenar.
{ "sub": "1234567890", "name": "John Doe", "admin": true } -
Firma: Asegura la integridad del token combinando el encabezado, el cuerpo, y una clave secreta.
La seguridad reside en que solo aquellos con acceso a la clave secreta puedan generar una firma válida, asegurando que los datos no han sido manipulados.
¿Dónde aplicar JSON Web Tokens?
Los JSON Web Tokens son ideales para:
- Aplicaciones de Una Sola Página (Single Page Applications - SPA): Dado que no se depende del servidor para manejar estado o rutas, adaptándose a APIs RESTful.
- APIs y Microservicios: La autenticación se maneja desde el servidor, permitiendo una interacción eficiente y segura.
- Aplicaciones Móviles y IoT (Internet of Things): Para validar usuarios y permisos sin la necesidad de sesiones de servidor.
¿Cómo integrar JWT con Vue.js y mantener seguridad?
Para integrar JWT en una aplicación Vue.js, seguir estos pasos es clave:
-
Preparar una API de autenticación: Usar Node.js con Express para manejar la lógica de generación y validación de los tokens.
const jwt = require('jsonwebtoken'); const token = jwt.sign({ id: user.id }, 'secretKey', { expiresIn: '1h' }); -
Configurar el Vue Router: Usar Vue Router para gestionar rutas y protegerlas según la autenticación.
router.beforeEach((to, from, next) => { const isLoggedIn = !!localStorage.getItem('token'); if (to.matched.some(record => record.meta.requiresAuth) && !isLoggedIn) { next('/login'); } else { next(); } }); -
Utilizar una librería HTTP: Como Axios o fetch con funciones personalizadas para manejar el envío de tokens en headers de las solicitudes.
axios.interceptors.request.use(config => { const token = localStorage.getItem('token'); if (token) { config.headers.Authorization = `Bearer ${token}`; } return config; }); -
Almacenar y manejar el token localmente: Usar Local Storage para guardar el token y fragmentos de información del usuario, asegurando una experiencia de usuario fluida.
localStorage.setItem('token', response.data.token);
Estos pasos ayudan a manejar la autenticación del lado del cliente de manera eficiente, recordando siempre que la lógica de autenticación vital debe residir en el servidor, manteniendo la seguridad de la aplicación.
Para más detalles sobre la implementación y ejemplos de código, se recomienda consultar los documentos oficiales de JSON Web Token, Vue Router, y librerías HTTP como Axios y Fetch. Llene su mente con estos conocimientos y siga construyendo aplicaciones cada vez más seguras y eficientes.