目录

ExpressJS - 会话( Sessions)

HTTP是无状态的; 为了将请求与任何其他请求相关联,您需要一种在HTTP请求之间存储用户数据的方法。 Cookie和URL参数都是在客户端和服务器之间传输数据的合适方式。 但它们都是可读的并且在客户端。 Sessions解决了这个问题。 您为客户端分配一个ID,并使用该ID进行所有进一步的请求。 与客户端关联的信息存储在链接到此ID的服务器上。

我们需要Express-session ,所以使用以下代码安装它。

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次。

第一次访问
↑回到顶部↑
WIKI教程 @2018