verificacion de email

La verificación de correo electrónico es una técnica en node.js que se utiliza para garantizar si el correo electrónico proporcionado corresponde a un usuario existente o no porque, de lo contrario, la base de datos se llenará de usuarios innecesarios. 

El proceso es así, enviamos algún tipo de token al correo electrónico y el usuario envía una solicitud de obtención junto con ese token, ahora si la solicitud de obtención consiste en el token exacto que enviamos anteriormente desde el servidor, entonces el correo electrónico se considera verificado.  

Requisito previo: nodemailer , jwt , funcionamiento básico de node y express .  

Paso 1: Cree un proyecto de Node e inicialice el código con la instalación

npm init            // To initialize the package
npm install jsonwebtoken // To generate token 
npm install express      // To create server
npm install nodemailer   // To send email

Esta sería nuestra estructura de carpetas después de la instalación y la creación de dos archivos vacíos, a saber, app.js y tokenSender.js

Paso 2: crea una ruta para generar tokens y enviar un correo electrónico   

Después de la instalación, podemos proceder a generar un token con jwt y enviar un correo electrónico con nodemailer. Aquí estamos usando Gmail como servicio para simplificar, pero los conceptos fundamentales siguen siendo los mismos.   

Explicación: en la primera línea hemos importado el paquete nodemailer que luego se usará para enviar correo y luego hemos creado un objeto transportador que se usa para enviar correo y contiene algunas configuraciones sobre el servicio de correo electrónico y el remitente. Y luego hemos creado otro objeto que contendrá información sobre el correo como el destinatario, el remitente, el texto del correo electrónico, etc. 
Al final, el método sendMail del objeto transportador simplemente envía el correo a la dirección dada. 

tokenSender.js

const nodemailer = require('nodemailer');
const jwt = require('jsonwebtoken');
  
const transporter = nodemailer.createTransport({
    service: 'gmail',
    auth: {
        user: secure_configuration.EMAIL_USERNAME,
        pass: secure_configuration.PASSWORD
    }
});
  
const token = jwt.sign({
        data: 'Token Data'  .
    }, 'ourSecretKey', { expiresIn: '10m' }  
);    
  
const mailConfigurations = {
  
    // It should be a string of sender/server email
    from: 'mrtwinklesharma@gmail.com',
  
    to: 'smtwinkle451@gmail.com',
  
    // Subject of Email
    subject: 'Email Verification',
      
    // This would be the text of email body
    text: `Hi! There, You have recently visited 
           our website and entered your email.
           Please follow the given link to verify your email
           http://localhost:3000/verify/${token} 
           Thanks`
      
};
  
transporter.sendMail(mailConfigurations, function(error, info){
    if (error) throw Error(error);
    console.log('Email Sent Successfully');
    console.log(info);
});

Salida: estamos ejecutando el archivo con el comando de Node y, como era de esperar, nuestro correo electrónico se envía correctamente.

Paso 3: cree una ruta para recibir la solicitud junto con el token y verifique el correo electrónico  

Después de haber enviado el token al usuario, el siguiente paso es configurar una ruta en el servidor, y el usuario enviará la solicitud de obtención con el token en el parámetro porque el navegador solo puede enviar datos con URL. 

Explicación: aquí hemos creado un servidor expreso simple y existe una ruta de obtención. Dentro de eso, estamos extrayendo la información, es decir, el token de la URL, y luego lo estamos verificando con jwt, como si el token que se envía es exactamente el que se generó desde nuestro servidor o no. 
Finalmente, la ruta está enviando la respuesta adecuada según la verificación del token.

Nombre del archivo:

app.js

const express = require('express');
const jwt = require('jsonwebtoken');
  
const app = express();
const PORT = 3000;
  
app.get('/verify/:token', (req, res)=>{
    const {token} = req.params;
  
    // Verifing the JWT token 
    jwt.verify(token, 'ourSecretKey', function(err, decoded) {
        if (err) {
            console.log(err);
            res.send("Email verification failed, 
                    possibly the link is invalid or expired");
        }
        else {
            res.send("Email verifified successfully");
        }
    });
});
  
app.listen(PORT, (error) =>{
    if(!error)
        console.log("Server is Successfully Running, 
                  and App is listening on port "+ PORT)
    else
        console.log("Error occurred, server can't start", error);
    }
);

Salida: Ejecute el servidor con el comando de Node.

En la bandeja de entrada, tendremos nuestro correo electrónico enviado por el servidor. Después de esto, hacemos una solicitud de obtención en el servidor haciendo clic en el enlace proporcionado y, como se esperaba, el servidor responderá como un correo electrónico verificado. Más tarde, cambiamos un poco la URL para que la URL no sea válida y, en consecuencia, el servidor responde que la verificación del correo electrónico falló debido al token no válido. 

Conclusión: este fue el código completo y el flujo de trabajo de verificación de correo electrónico en nodejs. Puede consultar los artículos de geeksforgeeks vinculados en la sección de requisitos previos para obtener más información sobre estas bibliotecas. En algunos otros ejemplos, los términos, las bibliotecas, las técnicas y los patrones de diseño pueden cambiar un poco, pero el concepto general seguirá siendo el mismo. 

Publicación traducida automáticamente

Artículo escrito por mrtwinklesharma y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *