📅  最后修改于: 2020-10-23 07:51:01             🧑  作者: Mango
HTTP是无状态的,因此为了将一个请求与任何其他请求相关联,您需要一种在HTTP请求之间存储用户数据的方法。 Cookies和URL参数都是在客户端和服务器之间传输数据的合适方法。但是,它们在客户端都是可读的。会议正是解决了这个问题。您为客户端分配一个ID,它使用该ID发出所有其他请求。与客户端关联的信息存储在链接到该ID的服务器上。
我们需要koa会话,因此可以使用-
npm install --save koa-session
我们将放置koa会话中间件。在此示例中,我们将使用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次。