Koa.js - 会话



HTTP是无状态的,因此为了将一个请求与任何其他请求关联起来,您需要一种方法来在HTTP请求之间存储用户数据。Cookie和URL参数都是将数据在客户端和服务器之间传输的合适方法。但是,它们都可以在客户端读取。会话正是解决了这个问题。您为客户端分配一个ID,它使用该ID发出所有后续请求。与客户端关联的信息存储在与该ID链接的服务器上。

我们需要koa-session,因此使用以下命令安装它:

npm install --save koa-session

我们将koa-session中间件部署到位。在这个例子中,我们将使用RAM来存储会话。切勿在生产环境中使用此方法。会话中间件处理所有事情,即创建会话、设置会话cookie以及在上下文对象中创建会话对象。

每当我们再次从同一客户端发出请求时,我们都会将他们的会话信息存储在我们这里(假设服务器没有重启)。我们可以向此会话对象添加更多属性。在下面的例子中,我们将为客户端创建一个访问计数器。

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

上面代码的作用是,当用户访问站点时,它会为用户创建一个新会话并分配一个cookie。下次用户访问时,会检查cookie并相应地更新page_view会话变量。

现在,如果您运行应用程序并访问localhost:3000,您将获得以下响应。

Session First

如果您重新访问页面,页面计数器将会增加。在本例中,页面刷新了12次。

Session 12
广告