El token web JSON es un método eficiente, seguro y utilizado principalmente para transferir o intercambiar datos en Internet. Generalmente, se utiliza para autenticación y autorización en aplicaciones. El flujo de trabajo de la autenticación es que generamos el token en el servidor y lo enviamos al cliente, que se usa para más requests en el servidor. Ahora, el punto de discusión es cuánto tiempo será válido este token jwt. eso significa después de qué duración el servidor no considerará el token enviado por el cliente. Primero comprendamos cómo se crea un token JWT.
El método sign() de la biblioteca jsonwebtoken se usa para crear un token que acepta cierta información como objetos de parámetros y devuelve el token generado.
Sintaxis:
jwt.sign(payload, secretOrPrivateKey, [options, callback])
Parámetros:
- payload: Es la información a encriptar en el token
- secretKey: Es la firma o puede decir un código que se utiliza para identificar la autenticidad del token.
- options: En la opción, pasamos cierta información sobre el token y ahí es donde proporcionamos la duración del token hasta el cual será válido.
Tipo de devolución : este método devolverá el token JWT
Ejemplo: Crear un token con 10 minutos de caducidad.
Paso 1: crear un proyecto de Node
Como estamos trabajando en una biblioteca de Nodes, es un paso obligatorio para crear un proyecto de Node, escriba npm init en la terminal. Le pedirá algunas configuraciones sobre su proyecto, que es muy fácil de proporcionar.
npm init
Paso 2: instale el paquete » jsonwebtoken «
Antes de ir a escribir el código JWT debemos tener que instalar el paquete,
npm install jsonwebtoken
Esta sería la estructura de nuestro proyecto después de la instalación, donde node_modules contiene los módulos y package.json almacena la descripción del proyecto. Además, hemos creado un archivo app.js para escribir el código completo.
Estructura del proyecto:
Paso 3 : Crear token JWT con un tiempo de caducidad definido.
Hay dos métodos para registrar la caducidad del token, ambos se muestran a continuación con una explicación.
- Creación de una expresión de un tiempo de caducidad.
- Proporcionar el tiempo de caducidad del token JWT en el argumento de opciones del método.
Enfoque 1: existe una clave exp en la que podemos proporcionar la cantidad de segundos desde la época y el token será válido hasta esos segundos.
Javascript
// Importing module const jwt = require('jsonwebtoken'); const token = jwt.sign({ // Expression for initialising expiry time exp: Math.floor(Date.now() / 1000) + (10 * 60), data: 'Token Data' }, 'secretKey'); const date = new Date(); console.log(`Token Generated at:- ${date.getHours()} :${date.getMinutes()} :${date.getSeconds()}`); // Printing the JWT token console.log(token);
Producción:
Enfoque 2: en este método, podemos pasar el tiempo para que expire. Ingrese las opciones, requiere la cantidad de segundos hasta que el token siga siendo válido o la string de duración como ‘1h’ , ‘2h’ , ’10m’ , etc. .
Javascript
// Importing module const jwt = require('jsonwebtoken'); const token = jwt.sign({ // Assigning data value data: 'Token Data' }, 'secretKey', { expiresIn: '10m' }); const date = new Date(); console.log(`Token Generated at:- ${date.getHours()} :${date.getMinutes()} :${date.getSeconds()}`); // Printing JWT token console.log(token);
Producción:
Paso 4: Verifique el token en términos de duración de vencimiento
Hemos generado con éxito el token, ahora es el momento de verificar si el código funciona de la manera prevista o no.
Javascript
//Importing module const jwt = require('jsonwebtoken'); // JWT token const token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2Mzc4NjgxMzMsImRhdGWf" const date = new Date(); // Verifing the JWT token jwt.verify(token, 'secretKey', function(err, decoded) { if (err) { console.log(`${date.getHours()}:${date.getMinutes()} :${date.getSeconds()}`); console.log(err); } else { console.log(`${date.getHours()}:${date.getMinutes()} :${date.getSeconds()}`); console.log("Token verifified successfully"); } });
Antes de 10 minutos:
Salida 1: aquí estamos comprobando antes de 10 minutos de generar el token, como se esperaba, el bloque de código else funcionará.
Después de 10 minutos:
Salida 2 : Aquí estamos comprobando una vez que el token haya caducado, en este caso se lanzará el TokenExpirationError .
Conclusión: después de ver estas dos salidas y el método de creación de tokens, podemos analizar cómo se declara la duración del token y cuánto tiempo permanece válido.
Publicación traducida automáticamente
Artículo escrito por mrtwinklesharma y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA