¿Cómo verificar la autenticación de usuario en el método GET usando Node.js?

Hay tantos métodos de autenticación como autenticación de token web, autenticación basada en cookies y muchos más. En este artículo, discutiremos uno de los métodos de autenticación más simples que usan express.js durante el manejo de los clientes que reciben una solicitud en node.js con la ayuda de los encabezados HTTP. 

Enfoque: los protocolos HTTP utilizan varios tipos de encabezados para la autenticación. El cliente usará el encabezado WWW-Authenticate. Encabezado HTTP WWW-Authenticate

Cuando el encabezado de solicitud del cliente no contiene el encabezado de respuesta de los servidores de encabezado WWW-Authenticate, configure
el encabezado como res.setHeader («WWW-Authenticate», ‘Basic’) y configure el código de estado 401 y después de esto,
aparecerá una ventana emergente en el del lado del cliente para una autenticación válida.

Formulario de autenticación:

Instalación del módulo:

npm install express

Estructura del proyecto:

index.js

// Importing required modules
const { response } = require("express");
const express = require("express");
const app=express()
  
// Handling get request from the client side
app.get("/",(req,res,next)=>{
  
     // Checking the header of the authorization
    var authheader=req.headers.authorization;
    console.log(authheader)
    if(!authheader){
        
        var err=new Error("You are not authenticated")
        // Set the header for the response
        res.setHeader("WWW-Authenticate",'Basic')
        err.status=401
        return next(err)
    
    }
    console.log(authheader)
  
    // Decrypt the user name and the password
    var auth = new Buffer.from(authheader.split(' ')[1],
    'base64').toString().split(':');
    var user = auth[0];
    var pass = auth[1];
  
    // Checking the details
    if (user == 'admin' && pass == 'password') {
      res.send("Welcome you are authorized")
    } else {
        var err = new Error('You are not authenticated!');
        res.setHeader('WWW-Authenticate', 'Basic');
        err.status = 401;
        return next(err);
    }
  
})
app.listen(3000,()=>{
  console.log("Server is starting")
})

Ejecute index.js usando el siguiente comando:

node index.js

Producción:

  • Abra cualquier navegador con la ubicación http://localhost:3000 en una ventana privada (para evitar una contraseña y un nombre de usuario guardados). Se producirá un pop cerca de la barra de direcciones. Complete el nombre de usuario y la contraseña que se mencionan en el código.
  • Si el nombre de usuario y la contraseña ingresados ​​coinciden con la mención, la ubicación index.html aparecerá en el navegador.

Explicación: El primer middleware se usa para verificar la autenticación del cliente cuando se inicia el servidor y el cliente ingresa la dirección del host local. Inicialmente , req.headers.authorization no está definido y la función de devolución de llamada next() devuelve el código de estado 401 de acceso no autorizado al navegador. El cliente llena las credenciales y las credenciales cifradas en formato base64. Después de eso, descifra los datos de formato base64 que contienen el nombre de usuario y la contraseña, luego, después de verificar que el nombre de usuario y la contraseña son correctos, el método next() llama al siguiente middleware que se menciona debajo del middleware de autenticación, de lo contrario, el formulario de autenticación aparece una y otra vez. .

Detalles del encabezado de la solicitud: 

Publicación traducida automáticamente

Artículo escrito por zack_aayush 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 *