Express.js 中如何使用 cookie 和 session

阅读时长 4 分钟读完

介绍

在 Web 应用程序中保存状态信息对于用户而言是非常重要的。例如,要在应用中保持用户的登录状态,或者将用户的浏览历史或购物车信息保存在服务器中,以便用户可以随时访问。

本文将介绍如何在 Express.js 中使用 Cookie 和 Session 来管理状态信息。

什么是 Cookie?

Cookie 是 Web 服务器用于在客户端存储信息的一种机制。当 Web 服务器返回响应时,它可以在响应中包含一个名为 Set-Cookie 的标头,以将一个或多个 Cookie 发送回客户端。客户端将保存这些 Cookie 并在所有访问同一域的请求中发送它们。

每个 Cookie 都由名称、值、过期时间和其他可选属性组成。Cookie 只能存储少量文本数据,例如用户的首选语言或网站的主题。Cookie 不能用于存储敏感信息,例如密码或信用卡信息。

以下代码演示如何创建和设置一个 cookie:

这里我们使用 res.cookie 函数创建一个新的 Cookie,第一个参数是 Cookie 的名称,第二个参数是 Cookie 的值,第三个参数是可选的配置项,例如 Cookie 的过期时间和安全设置(httpOnly 选项指定 cookie 是否仅通过 HTTP 连接而不能在客户端使用 JavaScript 访问)。

要从请求中读取 cookie,我们可以使用 req.cookies 对象:

以上示例将输出 name Cookie 的值。

什么是 Session?

Session 与 Cookie 类似,但它们可以存储更大的数据,例如用户的最近活动和购物车信息。它还提供了更多的安全性和控制,例如在每个请求上重新生成会话 ID,以防止会话劫持攻击。

Express.js 使用 express-session 模块来创建和管理用户会话。要使用 express-session,需要使用 npm 安装它:

现在,我们来看一个简单的示例,演示如何在 Express.js 应用程序中使用 express-session

-- -------------------- ---- -------
----- ------- - -------------------
----- ------- - ---------------------------

----- --- - ----------

-----------------
  ------- ----------------
  ------- ------
  ------------------ -----
  ------- - ------- ---- -
----

------------ ----- ---- -- -
  ----- - ------- - - ----
  -- --------------- -
    ----------------
    ------------- ---------------- --------
  - ---- -
    ------------- - --
    -----------------------
  -
---

---------------- -- -- -
  ---------------------
---

在以上示例中,我们首先在应用程序中使用 express-session 中间件,以便在请求中使用 req.session 访问客户端的会话。

然后,我们在 '/' 路由处理程序中使用 req.session 对象来跟踪用户对应用程序的访问。如果客户端已经有 session.views,则将其增加 1,否则将 session.views 初始化为 1,并返回欢迎消息。

总结

通过使用 Cookie 和 Session,我们可以在 Express.js 应用程序中存储和管理会话状态信息。虽然它们都提供了在客户端存储数据的方式,但 Cookie 通常用于存储轻量级数据,而 Session 通常用于存储更多的数据,如购物车或个人资料信息。

在使用这些功能时,请注意安全性。如有必要,请将 Cookie 和 Session 的过期时间设置为较短的时间,并避免在 Cookie 中存储敏感数据。

参考资料

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65af7a7dadd4f0e0ff8eba2e

纠错
反馈