HTTP是无状态的,因此为了将请求与任何其他请求相关联,您需要一种在HTTP请求之间存储用户数据的方法. Cookie和URL参数都是在客户端和服务器之间传输数据的合适方式.但是,它们在客户端都是可读的. Sessions解决了这个问题.您为客户端分配一个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,你会得到以下回复.
如果你重新访问页面,页面计数器将增加.在这种情况下,页面刷新了12次.