Sesiones en ExpressJS

Una sesión es un intercambio de información semi-permanenete. En este caso, el servidor envía una cookie de sesión a un cliente que este reenvia con cada conexión y permite al servidor identificarlo y asociar información con él sin confundirlo con otros usuarios. Para crear sesiones nos podemos ayudar del módulo express-session.

Cookies de sesión

Las cookies permiten guardar información en el cliente, en este caso podrían guardar información sobre quién es el cliente la primera vez que se inicia la conexión. Con express podemos utilizar un middleware para utilizar las cookies con este propósito.

Primero, debemos inicializar cookieParser() con un secreto, después el middleware de cookieSession y por último el enrutador. Es necesario pasar como parámetro el secreto ya que cookieSession genera la cookie firmada.

app.use(express.cookieParser('S3CRE7'));
app.use(express.cookieSession());
app.use(app.router);

Es posible además añadir opciones al inicializar el objeto cookieSession().

Opción Descripción
key Nombre de la cookie
secret Utilizado para firmar la cookie
cookie Configuración de la cookie
proxy Fija si confiar en el reverse proxy

Sesión basada en Session store

Las Session store permiten almacenar datos de las sesiones en el backend. Así es posible almacenar una cantidad de datos mucho mayor que con las cookies de forma más segura y fiable. Igual que en el apartado anterior podemos debemos inicializar de la siguiente forma.

app.use(express.cookieParser('S3CRE7'));
app.use(express.session());
app.use(app.router);

También igual que el apartado anterior podemos configurar el modulo sessión pasandole un objeto de configuración. Los valores son los mismos que con la cookieSession pero además añadimos la key "store" que indica la instancia de la session store. Por defecto esta será la MemoryStore, sin embargo, esta es poco recomendada por no ser segura.

Se puede ver un ejemplo del uso de session en ExpressJS utilizando además autenticación en ese mismo apartado (que se verá a continuación).

results matching ""

    No results matching ""