- ExpressJS 教程
- ExpressJS - 首页
- ExpressJS - 概述
- ExpressJS - 环境
- ExpressJS - Hello World
- ExpressJS - 路由
- ExpressJS - HTTP 方法
- ExpressJS - URL 构建
- ExpressJS - 中间件
- ExpressJS - 模板引擎
- ExpressJS - 静态文件
- ExpressJS - 表单数据
- ExpressJS - 数据库
- ExpressJS - Cookie
- ExpressJS - 会话
- ExpressJS - 身份验证
- ExpressJS - RESTful API
- ExpressJS - 脚手架
- ExpressJS - 错误处理
- ExpressJS - 调试
- ExpressJS - 最佳实践
- ExpressJS - 资源
- ExpressJS 有用资源
- ExpressJS - 快速指南
- ExpressJS - 有用资源
- ExpressJS - 讨论
ExpressJS - 会话
HTTP 是无状态的;为了将一个请求与任何其他请求关联起来,您需要一种方法来在 HTTP 请求之间存储用户数据。Cookie 和 URL 参数都是将数据在客户端和服务器之间传输的合适方法。但它们都可以在客户端读取。会话解决了这个问题。您为客户端分配一个 ID,它使用该 ID 发出所有后续请求。与客户端关联的信息存储在服务器上,并链接到此 ID。
我们需要 Express-session,因此请使用以下代码安装它。
npm install --save express-session
我们将 session 和 cookie-parser 中间件部署到位。在这个例子中,我们将使用默认存储来存储会话,即 MemoryStore。永远不要在生产环境中使用它。session 中间件为我们处理所有事情,即创建会话、设置会话 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 次。
广告