Revista Informática

Node.js y Express: Cookies y Sesiones

Publicado el 18 noviembre 2013 por Codehero @codeheroblog

Cookies

Para hacer uso de la cookies tenemos que hacer uso del cookieParser en app.js.

app.use(express.cookieParser());

1 appuse(expresscookieParser());

Ahora, necesitamos crear un cookie. Esto lo hacemos a través de res.cookie donde “res” es nuestro objeto response que viene como parámetro en una ruta. Lo único que tenemos que especificar es el nombre del cookie y el valor: res.cookie('name', 'oscar')

Esto retorna el mismo objeto response por lo que podemos encadenarle otros llamados. Veamos un ejemplo en una ruta:

app.get('/name/:name', function(req, res) { res .cookie('name', req.params.name) .send('<p> Vea el valor del cookie <a href="/name">aquí</a> </p>'); });

12345678910 appget('/name/:name',function(req,res){   res  cookie('name',reqparamsname)  send('<p>  Vea el valor del cookie <a href="/name">aquí</a>  </p>'); });

El método cookie de response también puede recibir otro parámetro con unas opciones, como la fecha de expiración de una cookie por ejemplo:

res.cookie('name', 'oscar', { expires: new Date(Date.now() + 900000) } );

1 rescookie('name','oscar',{expires:newDate(Datenow()+900000)});

En el caso de esta demostración no es necesario asignar ninguno de estos valores. Para mayor información puedes chequear la documentación de Express.

Si navegamos ahora a localhost:3000/name/oscar veremos el mensaje “Vea el valor del cookie aquí” en el explorador. Para asegurarnos que se haya asignado el valor debemos abrir nuestra consola de javascript y escribir:

> document.cookie "name=oscar"

12 >documentcookie"name=oscar"

Ahora, si hacemos click en el link que colocamos en el mensaje que enviamos, obtendremos que la página no existe. vamos a crearla.

Para esto creamos la ruta:

app.get('/name', function (req, res) { res.send(req.cookies.name); });

123 appget('/name',function(req,res){  ressend(reqcookiesname);});

Como el valor de la ruta queda asignado, ahora siempre podremos obtenerlo en el objeto request.

Si vamos a localhost:3000/name veremos el valor de nuestra cookie “name”.

Ahora si quisiéramos crear una ruta para borrar el valor del cookie “name”, podemos llamar al método res.clearCookie('name');


Sesiones

Pasemos ahora a hablar de las sesiones.

Lo primero que tenemos que saber es que las sesiones solo las podemos obtener a través del objeto request.

Antes de empezar a trabajar con sesiones tenemos agregar la siguiente linea a nuestra sección de código de configuración:

app.use(express.session({ secret: 'esto es secreto'}));

1 appuse(expresssession({secret:'esto es secreto'}));

Este método recibe como parámetro una opción llamada “secret”, esto no tiene que ser ningún valor en especifico, es solo para crear un hash con esta cadena de caracteres.

Entonces ahora tenemos que hacer unos cambios en nuestras rutas para trabajar con sesiones:

app.get('/name/:name', function(req, res) { req.session.name = req.params.name; res .send('<p> Vea el valor de esta sesión <a href="/name">aquí</a> </p>'); }); app.get('/name', function (req, res) { res.send(req.session.name); });

12345678910111213141516 appget('/name/:name',function(req,res){   reqsessionname=reqparamsname;   res  send('<p>  Vea el valor de esta sesión <a href="/name">aquí</a>  </p>'); });  appget('/name',function(req,res){  ressend(reqsessionname);});

Esto pareciera ser más sencillo que usar cookies, y lo es, pero en realidad es incluso mejor, porque los valores quedan guardados en javascript y pueden ser más que un simple string como lo hacíamos con las cookies, con sesiones podríamos guardar objetos si quisiéramos. Un ejemplo que se me viene a la mente es el del carrito de compras; el usuario agrega artículos a un carrito de compras y aunque deje la página, cuando vuelva a acceder, podemos recuperar los artículos desde la sesión.

Entonces ahora podemos probar nuestra pequeña aplicación, accedemos a localhost:3000/name/pepe y luego a localhost:3000/name y deberíamos obtener el mismo comportamiento que con las cookies.


Conclusión

Estos son los pasos básicos para trabajar con cookies y sesiones en Node.js con Express. Como puedes ver es muy simple y muy util para cuando hacemos aplicaciones más grandes.

Cualquier duda o comentario, como siempre, no dejes de agregarlo en la sección de comentarios más abajo.

Hasta la próxima.


Volver a la Portada de Logo Paperblog