¿Cómo configurar cookies en el nodo js usando Express Framework?

En mi aplicación, necesito establecer una cookie usando el marco express. He intentado con el siguiente código pero no está configurando la cookie.

¿Alguien puede ayudarme a hacer esto?

var express = require('express'), http = require('http'); var app = express(); app.configure(function(){ app.use(express.cookieParser()); app.use(express.static(__dirname + '/public')); app.use(function (req, res) { var randomNumber=Math.random().toString(); randomNumber=randomNumber.substring(2,randomNumber.length); res.cookie('cokkieName',randomNumber, { maxAge: 900000, httpOnly: true }) console.log('cookie have created successfully'); }); }); var server = http.createServer(app); var io = require('socket.io').listen(server); server.listen(5555); 

El orden en que utiliza el middleware en asuntos Express: el middleware declarado anteriormente se llamará primero, y si puede manejar una solicitud, no se llamará a ningún middleware declarado posteriormente.

Si express.static está manejando la solicitud, debe mover su middleware hacia arriba:

 // need cookieParser middleware before we can do anything with cookies app.use(express.cookieParser()); // set a cookie app.use(function (req, res, next) { // check if client sent cookie var cookie = req.cookies.cookieName; if (cookie === undefined) { // no: set a new cookie var randomNumber=Math.random().toString(); randomNumber=randomNumber.substring(2,randomNumber.length); res.cookie('cookieName',randomNumber, { maxAge: 900000, httpOnly: true }); console.log('cookie created successfully'); } else { // yes, cookie was already present console.log('cookie exists', cookie); } next(); // <-- important! }); // let static middleware do its job app.use(express.static(__dirname + '/public')); 

Además, el middleware necesita finalizar una solicitud (devolviendo una respuesta) o pasar la solicitud al siguiente middleware. En este caso, he hecho esto último llamando a next() cuando se ha establecido la cookie.

Establecer Cookie?

 res.cookie('cookieName', 'cookieValue') 

Leer Cookie?

 req.cookies 

Manifestación

 const express('express') , cookieParser = require('cookie-parser'); // in order to read cookie sent from client app.get('/', (req,res)=>{ // read cookies console.log(req.cookies) let options = { maxAge: 1000 * 60 * 15, // would expire after 15 minutes httpOnly: true, // The cookie only accessible by the web server signed: true // Indicates if the cookie should be signed } // Set cookie res.cookie('cookieName', 'cookieValue', options) // options is optional res.send('') }) 

No respondí exactamente a su pregunta, pero encontré su pregunta buscando una respuesta a mi problema. Así que lo publico aquí, tal vez ayudará a alguien.

Mi problema era que las cookies se configuraban en la respuesta del servidor, pero el navegador no las guardaba. La respuesta del servidor regresó con el conjunto de cookies:

 Set-Cookie:my_cookie=HelloWorld; Path=/; Expires=Wed, 15 Mar 2017 15:59:59 GMT 

Pero la cookie nunca fue guardada por un navegador.

Así es como lo resolví.

Yo uso fetch en un código del lado del cliente. Si no especifica credentials: 'include' en las opciones de fetch , las cookies no se envían al servidor ni se guardan en un navegador, aunque la respuesta del servidor establece cookies.

Ejemplo:

 var headers = new Headers(); headers.append('Content-Type', 'application/json'); headers.append('Accept', 'application/json'); return fetch('/your/server_endpoint', { method: 'POST', mode: 'same-origin', redirect: 'follow', credentials: 'include', // Don't forget to specify this if you need cookies headers: headers, body: JSON.stringify({ first_name: 'John', last_name: 'Doe' }) }) 

Espero que ayude a alguien.

Establecer una cookie:

 res.cookie('cookie', 'monster') 

https://expressjs.com/en/4x/api.html#res.cookie

Lee una cookie:
(usando el middleware del analizador de cookies )

 req.cookies['cookie'] 

https://expressjs.com/en/4x/api.html#req.cookies