Node.js 中的会话 Cookie

2025年5月8日 | 阅读 4 分钟

在本文中,我们将讨论 Node.js 中的会话 Cookie,包括会话 Cookie 的目的、会话 Cookie 的工作原理、关键特性以及一个示例。

Node.js 中的会话 Cookie 是什么?

主要在服务器端创建的临时 Cookie 称为会话 Cookie。它们用于在特定会话过程中跟踪与客户端请求相关的数据。当浏览器关闭时,会话会自动终止。它仅在用户与网站互动期间有效。

会话 Cookie 的目的

会话 Cookie 的主要目的如下。

  1. 临时性:为了确保会话数据是短暂的,会话 Cookie 会在用户与网站互动时创建,并在浏览器关闭时自动删除。
  2. 服务器端跟踪:客户端 Cookie 仅保存会话 ID,该 ID 用于在后续请求中从服务器请求相关的会话数据。会话数据存储在服务器上。
  3. 安全身份验证:服务器可以通过利用会话 ID 来识别返回的用户,这确保了安全身份验证,并允许根据用户的会话数据提供个性化体验。

会话 Cookie 如何工作?

在这里,我们将讨论 Node.js 中的会话 Cookie 如何工作。Node.js

  1. 服务器端设置:在用户首次登录或与网站互动后,服务器会创建一个会话 ID。为了跟踪用户的会话数据,包括登录状态和购物车内容,此会话 ID 存储在服务器上(通常在内存、数据库或外部存储中)。
  2. 会话 Cookie 创建:在服务器创建会话 ID 后,会将其以 Cookie 的形式发送给客户端。Cookie 中仅包含用于在后续请求中引用服务器上会话数据的会话 ID。
  3. 请求处理:每次客户端发出请求时,浏览器都会自动将会话 Cookie 发送回服务器。服务器可以通过使用 Cookie 中的会话 ID 来查找相关的会话数据,从而识别用户、获取其偏好或跟踪活动。
  4. 会话 Cookie 过期:根据定义,会话 Cookie 是暂时的。当 Cookie 过期时,会话结束,而 Cookie 过期通常发生在浏览器关闭时。因此,可以确保在用户完成互动后会话数据丢失。

会话 Cookie 的关键特性

会话 Cookie 具有以下关键特性。

  1. 临时性:当用户开始使用网站时,会创建会话 Cookie。为了跟踪该会话期间的用户行为,它们会保存一个会话标识符。当浏览器关闭时,会话结束,会话 Cookie 失效。
  2. 服务器端跟踪:服务器跟踪实际的会话信息,包括用户偏好或登录状态。客户端 Cookie 中仅保存会话标识符。由于会话 ID,服务器可以将客户端请求与其存储的会话数据关联起来。
  3. 安全身份验证:在整个会话期间,服务器可以识别返回的用户,这归功于会话 ID。利用存储的会话数据,服务器可以自定义用户体验。此方法在不显式在 Cookie 中透露敏感信息的情况下,有助于保持用户身份验证。

示例

让我们以一个示例来说明 Node.js 中的会话 Cookie。

输出

 
An error occurred while loading dependencies: Cannot find module 'express'   

说明

此代码使用 express-session 中间件来设置一个基本的 Express.js 应用程序,并进行会话管理。它使用特定的配置设置会话,例如会话持久性、Cookie 过期时间和密钥。当用户登录时,`/login` 路由会为他们创建一个会话,该会话会保留他们的用户名和 `loggedIn` 标志。通过确认会话信息,`/dashboard` 路由会判断用户是否已登录并显示个性化消息。通过删除会话,`/logout` 路由会注销用户。服务器在端口 3000 上监听,同时以临时、安全的方式管理会话数据。