HTTP是无状态的;为了将请求与任何其他请求相关联,您需要一种在HTTP请求之间存储用户数据的方法. Cookie和URL参数都是在客户端和服务器之间传输数据的合适方式.但它们都是可读的并且在客户端. Sessions解决了这个问题.您为客户端分配一个ID,并使用该ID进行所有进一步的请求.与客户端关联的信息存储在链接到此ID的服务器上.
我们需要 Express-session ,因此请使用以下代码进行安装./p>
npm install --save express-session
我们将把会话和 cookie-parser 中间件到位.在此示例中,我们将使用默认存储来存储会话,即MemoryStore.切勿在生产环境中使用它.会话中间件为我们处理所有事情,即创建会话,设置会话cookie以及在 req 对象中创建会话对象.
每当我们制作一个再次请求来自同一客户端,我们会将他们的会话信息与我们一起存储(假设服务器未重新启动).我们可以向会话对象添加更多属性.在下面的示例中,我们将为客户端创建一个视图计数器.
var express = require('express'); var cookieParser = require('cookie-parser'); var session = require('express-session'); var app = express(); app.use(cookieParser()); app.use(session({secret: "Shh, its a secret!"})); app.get('/', function(req, res){ if(req.session.page_views){ req.session.page_views++; res.send("You visited this page " + req.session.page_views + " times"); } else { req.session.page_views = 1; res.send("Welcome to this page for the first time!"); } }); app.listen(3000);
上述代码的作用是,当用户访问该网站时,它会为用户创建一个新会话并为其分配一个cookie.下次用户访问时,会检查cookie并相应地更新 page_view 会话变量.
现在,如果您运行应用程序并转到 localhost :3000 ,将显示以下输出.
如果您再次访问该页面,页面计数器将会增加.以下屏幕截图中的页面刷新了42次.