Koa.js - Sesiones
HTTP no tiene estado, por lo tanto, para asociar una solicitud a cualquier otra solicitud, necesita una forma de almacenar datos de usuario entre solicitudes HTTP. Las cookies y los parámetros de URL son formas adecuadas de transportar datos entre el cliente y el servidor. Sin embargo, ambos son legibles en el lado del cliente. Las sesiones resuelven exactamente este problema. Usted asigna al cliente una identificación y realiza todas las solicitudes adicionales utilizando esa identificación. La información asociada con el cliente se almacena en el servidor vinculado a este ID.
Necesitaremos koa-session, por lo tanto, instálelo usando -
npm install --save koa-session
Pondremos el koa-sessionmiddleware en su lugar. En este ejemplo, usaremos la RAM para almacenar sesiones. Nunca use esto en entornos de producción. El middleware de sesión maneja todo, es decir, crear la sesión, configurar la cookie de sesión y crear el objeto de sesión en el objeto de contexto.
Siempre que hagamos una solicitud del mismo cliente nuevamente, tendremos su información de sesión almacenada con nosotros (dado que el servidor no se reinició). Podemos agregar más propiedades a este objeto de sesión. En el siguiente ejemplo, crearemos un contador de vistas para un cliente.
var session = require('koa-session');
var koa = require('koa');
var app = koa();
app.keys = ['Shh, its a secret!'];
app.use(session(app)); // Include the session middleware
app.use(function *(){
var n = this.session.views || 0;
this.session.views = ++n;
if(n === 1)
this.body = 'Welcome here for the first time!';
else
this.body = "You've visited this page " + n + " times!";
})
app.listen(3000);
Lo que hace el código anterior es que cuando un usuario visita el sitio, crea una nueva sesión para el usuario y le asigna una cookie. La próxima vez que el usuario visite, se verificará la cookie y la variable de sesión page_view se actualizará en consecuencia.
Ahora, si ejecuta la aplicación y va a localhost:3000, obtendrá la siguiente respuesta.
Si vuelve a visitar la página, el contador de páginas aumentará. En este caso, la página se actualizó 12 veces.