如何在 Express.js 中设置和使用 Session

阅读时长 4 分钟读完

Session 是 Web 应用程序中管理用户状态的一种方法。在 Express.js 中,使用 Session 可以方便地存储用户的登录状态、购物车、喜好设置等信息,以便于用户在多次请求之间访问这些数据。在本篇文章中,我们将学习如何在 Express.js 中设置和使用 Session。

安装和配置 session 中间件

在使用 Session 之前,需要先安装和配置相应的中间件。我们可以使用以下命令安装 express-session 中间件:

然后在 Express.js 的主文件中引入和配置 express-session 中间件:

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

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

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

上面的代码中,secret 属性是一个用于生成 Session ID 的密码,可以任意设置。resavesaveUninitialized 属性是两个 Boolean 值,分别表示在每个请求响应完毕后是否强制保存 Session 和初始化 Session 对象。通常将它们都设置为 false

在路由中设置和获取 Session

在 Express.js 中存储和访问 Session 很简单。在路由中添加以下代码:

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

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

上面的代码中,/login 路由将用户名存储在 Session 中,/profile 路由从 Session 中读取用户名并作为欢迎信息返回给用户。如果 Session 中不存在用户名,则提示用户先登录。

Session 的默认存储方式

默认情况下,Express.js 中的 Session 是内存存储的。这意味着当您关闭 Node.js 服务器时,所有 Session 对象都将丢失。因此,在生产环境下,我们需要将 Session 存储到数据库或其他第三方存储服务中。

使用 Redis 存储 Session

Redis 是一种流行的内存数据库,可用于存储 Session 数据。我们可以使用 connect-redis 模块将 Session 存储到 Redis 中。以下是引入和配置 Redis Session 存储的示例代码:

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

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

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

上面代码中,我们引入 connect-redis 模块并使用 RedisStore 构造函数来创建 Redis 存储实例。然后将其传递给 session 中间件的 store 属性,以代替默认的内存存储。

总结

Session 是 Web 应用程序中管理用户状态的一个重要抽象。在 Express.js 中使用 Session 很简单,只需要安装和配置相应的中间件,然后在路由中进行设置和获取。在生产环境中,我们需要使用第三方存储服务(比如 Redis)来存储 Session 数据,以免丢失。希望这篇文章对您在使用 Express.js 中的 Session 产生了帮助。

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

纠错
反馈