Movatterモバイル変換


[0]ホーム

URL:


Skip to content
DEV Community
Log in Create account

DEV Community

Cover image for Generar un JSON Web Token (JWT) en NodeJS
Roberto Morais
Roberto Morais

Posted on

     

Generar un JSON Web Token (JWT) en NodeJS

Hoy os traigo una publicación sobre el uso de JSON Web Token en uno de nuestros proyectos para generar, en la función de login, un token que se pueda validar posteriormente antes de hacer una acción, por ejemplo de actualizado de usuarios.

Utilizaremos esta tecnología porque utiliza el algoritmo de encriptación HS256 y además, para generar el token se basa en una semilla (seem) que nos podemos inventar o generar, sin la cual, no se puede descifrar la información que contiene el token. Todo esto hace que sea uno de los procesos más seguros de tokerizado.

Para ello vamos a instalar el paquete de node parajsonwebtoken con el siguiente comando:

npm install jsonwebtoken --save
Enter fullscreen modeExit fullscreen mode

Después para usarlo en nuestro código, vale con importar el paquete y llamar a su función sign de la siguiente manera:

const jwt = require('jsonwebtoken');let token = jwt.sign({    infoUser}, 'este-es-el-seed', {expiresIn: '48h'});
Enter fullscreen modeExit fullscreen mode

El token que genera la siguiente función tendrá una duración de 48 horas, dos días, y utilizará la semilla este-es-el-seed para encriptar la información de usuario.

Si quieres usarlo en una función login podría ser algo así:

const express = require('express');// Usamos bcrypt para comprobar la contraseñaconst bcrypt = require('bcrypt');const jwt = require('jsonwebtoken');// Importamos el modelo de usuario de otro ficheroconst User = require('./models/User');const app = express();app.post('/login', (req, res) =>{    let body = req.body;    User.findOne({email: body.email}, (err, user) => {        if(err){            return res.status(500).json({               ok: false,               err              });        }        if(!user){            return res.status(400).json({                ok: false,                err: {                    message: 'Usuario o contraseña incrorrectos'                }            });        }        if(!bcrypt.compareSync(body.password, user.password)){            return res.status(400).json({                ok: false,                err: {                    message: 'Usuario o contraseña incrorrectos'                }            });        }        let token = jwt.sign({            user        }, 'este-es-el-seed', {expiresIn: '48h'});        res.json({            ok: true,            user,            token        });    });});
Enter fullscreen modeExit fullscreen mode

En la respuesta correcta de la función de login, nuestro servidor de NodeJS va a devolver la información de nuestro usuario, que la habremos definido previamente en nuestro modelo, y el token. La capa frontend ya puede guardar ese token como variable local de navegador y deberá mandarlo con el resto de peticiones para validar que el usuario creado puede ejecutar esas funciones.

Top comments(2)

Subscribe
pic
Create template

Templates let you quickly answer FAQs or store snippets for re-use.

Dismiss
CollapseExpand
 
yeasin72 profile image
Md Yeasin Arafath
New developer
  • Location
    Dhaka Bangladesh
  • Joined

I need a help

CollapseExpand
 
fuenrob profile image
Roberto Morais
I am a web application software programmer, I love learning new things and sharing experiences and knowledge with others.
  • Location
    Spain
  • Work
    Senior Developer
  • Joined

How can I help you?

Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment'spermalink.

For further actions, you may consider blocking this person and/orreporting abuse

I am a web application software programmer, I love learning new things and sharing experiences and knowledge with others.
  • Location
    Spain
  • Work
    Senior Developer
  • Joined

More fromRoberto Morais

DEV Community

We're a place where coders share, stay up-to-date and grow their careers.

Log in Create account

[8]ページ先頭

©2009-2025 Movatter.jp