Express Cookie-Parser: cookies firmadas y sin firmar

Una cookie es un fragmento de datos que se envía al lado del cliente con una solicitud y se almacena en el mismo lado del cliente mediante el navegador web que el usuario está utilizando actualmente. Con la ayuda de las cookies –

  • Es fácil para los sitios web recordar la información del usuario
  • Es fácil capturar el historial de navegación del usuario.
  • También es útil para almacenar las sesiones del usuario.

La sesión realiza requests a todos los servidores utilizando una identificación secreta. La información se almacena en el servidor que está vinculado a esta identificación secreta.
Para hacer uso de cookies en nuestra aplicación, se utiliza un middleware de analizador de cookies . Para instalarlo, escriba el siguiente comando:

npm install cookie-parser@latest --save

Además, para instalar el middleware express, escriba el siguiente comando:

npm install express@latest --save

Estos comandos instalarán las últimas versiones de cookie-parser y express.
El middleware de análisis de cookies se utiliza para analizar las cookies que se adjuntan a la solicitud realizada por el cliente al servidor. Por lo tanto, para usar el analizador de cookies, escribiremos las siguientes líneas de código en nuestro archivo JavaScript:

const cookieParser = require('cookie-parser');
const express = require('express')
  
const app = express();
app.use(cookieParser());

Veamos un ejemplo de cómo configurar una nueva cookie. Cree un nuevo archivo llamado «index.js». Para configurar y asignar un nombre a una cookie, siga el código:

const express = require('express');
const cookieParser = require('cookie-parser');
  
const app = express();
  
app.get('/', (req, res) => {
   res.cookie('name', 'GeeksForGeeks').send('Cookie-Parser');
});
  
app.listen(3000, (err) => {
    if(err){ console.log(err) } 
    else { console.log('Success!!') }
});

Aquí, enviamos la cookie a la nueva ruta y establecimos el nombre de la cookie como ‘GeeksForGeeks’. En el último bloque de código, nuestro servidor escucha el puerto 3000 con una función de devolución de llamada. Si habrá un error, la función de devolución de llamada devolverá el error; de lo contrario, devolverá «Éxito».
Ahora, ejecute el siguiente código con el comando:

node index.js

Para verificar si la cookie está configurada o no, simplemente vaya a este enlace después de configurar correctamente el servidor. Abra la consola y escriba el comando como –

document.cookie

Obtendrá la salida como –

"name=GeeksForGeeks"

Además, el middleware del analizador de cookies completa el req.cookies con el nombre que se envía al servidor. Aquí, en nuestro caso, podemos agregar la siguiente línea de código en nuestra ruta:

console.log(req.cookies)

La salida de la línea anterior será:

{ name: 'GeeksForGeeks' }

Métodos para el analizador de cookies

  • cookieParser(secreto, opciones)
  • – Este middleware toma dos parámetros. El primero será el ID secreto y el otro las opciones. El ID secreto puede ser una string o una array de strings. Si no se proporciona el parámetro secreto, tomará la cookie como una cookie sin firmar . Por lo tanto, es opcional proporcionar la identificación secreta. El segundo parámetro será un objeto que especifique qué acciones se realizarán con las cookies. Por ejemplo, decode es una función para decodificar el valor de la cookie.

  • cookieParser.JSONCookie(string)
  • – Este método analizará el valor de la cookie como una cookie JSON. Devolverá el valor JSON analizado si la cookie proporcionada es una cookie JSON. Si no es una cookie JSON, devolverá el valor pasado.

  • cookieParser.JSONCookies(cookies)
  • – Proporcionó un objeto con su Id adjunto. Este método iterará sobre los Id. de objeto proporcionados y llamará a la «JSONCookie» en cada valor. Reemplazará el valor original con el valor analizado. Esto devolverá el mismo objeto que se pasó.

  • cookieParser.signedCookie(string, secreto)
  • – Este método analiza la cookie como una cookie firmada. Si la cookie es una cookie firmada y la firma se puede validar, devolverá el valor sin firmar analizado. Si la cookie no está firmada, se devuelve el valor original. Si la cookie está firmada pero la firma no se puede validar, se devuelve falso .
    Ahora, nuestro segundo argumento secreto puede ser una string o una array de strings. Si es una string, se usará como un secreto. Si se trata de una array, se realizará una iteración sobre cada elemento de la array y se anulará la firma de la cookie utilizando cada secreto.

  • cookieParser.signedCookies(cookies, secreto)
  • – Este método realizará la iteración sobre cada ID y verificará si alguna ID es una cookie firmada. Si está firmado y se puede validar la firma, entonces la ID se eliminará del objeto y se agregará al nuevo objeto que regresa.

Según el tipo de cookie enviada por el cliente, estos métodos se llamarán automáticamente.

Implementación de Cookie Firmada y No Firmada

Cookie sin firmar
const express = require('express');
const cookieParser = require('cookie-parser');
  
const app = express();
  
app.get('/', (req, res) => {
   res.cookie('name', 'GeeksForGeeks').send();
   console.log(req.cookies);
  
});
  
  
app.listen(3000, (err) => {
    if(err){ console.log(err) } 
    else { console.log('Success!!') }
});

La salida para el código anterior será:

"name=GeeksForGeeks"
Galleta firmada
var express = require('express')
var cookieParser = require('cookie-parser')
   
var app = express()
app.use(cookieParser('GFG'))
   
app.get('/', function (req, res) {
  res.cookie('name', 'GeeksForGeeks', { signed: true }).send();
  console.log(req.signedCookies)
})
   
app.listen(3000, (err) => {
  if(err) { console.log(err) }
  else { console.log('Success') }
})

Aquí, en la cuarta línea, «GFG» se proporciona como un valor secreto para la cookie.
En la séptima línea, el nombre de la cookie se establece en «GeeksForGeeks» y el objeto firmado se establece en verdadero.
La salida para el código anterior será:

{ name: 'GeeksForGeeks' }

Publicación traducida automáticamente

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