Koa.js - Sessioni

HTTP è senza stato, quindi per associare una richiesta a qualsiasi altra richiesta, è necessario un modo per memorizzare i dati dell'utente tra le richieste HTTP. I cookie e i parametri URL sono entrambi modi adatti per trasportare i dati tra il client e il server. Tuttavia, sono entrambi leggibili sul lato client. Le sessioni risolvono esattamente questo problema. Assegnate al cliente un ID e lui effettua tutte le ulteriori richieste utilizzando quell'ID. Le informazioni associate al client vengono memorizzate sul server collegato a questo ID.

Avremo bisogno della sessione di koa, quindi installala usando -

npm install --save koa-session

Metteremo il file koa-sessionmiddleware in atto. In questo esempio, useremo la RAM per memorizzare le sessioni. Non utilizzarlo mai in ambienti di produzione. Il middleware della sessione gestisce tutto, ovvero la creazione della sessione, l'impostazione del cookie di sessione e la creazione dell'oggetto della sessione nell'oggetto contesto.

Ogni volta che facciamo di nuovo una richiesta dallo stesso client, avremo le informazioni sulla sua sessione memorizzate con noi (dato che il server non è stato riavviato). Possiamo aggiungere più proprietà a questo oggetto di sessione. Nell'esempio seguente, creeremo un contatore di visualizzazioni per un client.

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);

Ciò che fa il codice sopra è che, quando un utente visita il sito, crea una nuova sessione per l'utente e assegna un cookie. La prossima volta che l'utente visita, il cookie viene controllato e la variabile di sessione page_view viene aggiornata di conseguenza.

Ora se esegui l'app e vai a localhost:3000, otterrai la seguente risposta.

Se visiti nuovamente la pagina, il contatore delle pagine aumenterà. In questo caso, la pagina è stata aggiornata 12 volte.