Express.js 中 Session 的使用方法和配置

阅读时长 6 分钟读完

在使用 Express.js 进行 Web 应用程序开发时,Session 是一个非常重要的概念。Session 指的是在客户端与服务器之间存储的数据。在本文中,我们将介绍如何在 Express.js 中使用 Session,并提供示例代码以展示其使用方法和配置。

什么是 Session?

Session 是一种跨请求存储数据的机制。当用户访问一个网站时,服务器会创建一个唯一的 Session ID,并将其存储在客户端的 Cookie 中。在客户端向服务器发送请求时,这个 Session ID 会随着请求一起发送到服务器。服务器使用这个 Session ID 来标识这个请求属于哪个用户,从而获取用户的数据。

在 Express.js 中启用 Session

为了在 Express.js 中使用 Session,我们需要安装 express-session,使用以下命令:

安装完成后,在 Express.js 应用程序的主文件中引入 express-session

然后,我们需要在应用程序中使用 session() 中间件来启用 Session。默认情况下,Express.js 使用内存存储 Session,但是您还可以使用其他存储引擎来存储 Session。

下面是一个示例代码:

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

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

在上面的示例中,我们使用 app.use() 方法来启用 session() 中间件。secret 选项是必需的,它是一个用于加密 Session ID 的字符串。resavesaveUninitialized 选项用于配置 Session 的行为。

resave 选项指定当请求结束后,Session 是否应该被重新保存。如果设置为 false,则表示仅在 Session 数据更改时才会被保存到存储引擎中。如果设置为 true,则表示无论 Session 是否更改,都将重新保存 Session。

saveUninitialized 选项指定是否在请求开始时创建一个 Session。如果设置为 true,则表示在请求开始时将创建一个 Session,而不管这个 Session 是否在请求处理过程中使用。如果设置为 false,则表示仅在使用 Session 时才会创建一个 Session。

向 Session 中存储数据

在 Express.js 中向 Session 中存储数据非常简单,只需要使用以下代码:

在上面的代码中,我们使用 req.session 对象来设置 Session 数据。在此示例中,我们将 "John" 保存为 Session 数据。

从 Session 中获取数据

获取 Session 中的数据同样很容易,只需使用以下代码:

在上面的代码中,我们使用 req.session 对象来获取 Session 数据,并将其保存在 userName 变量中。

示例代码

以下是使用 Session 的完整示例代码:

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

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

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

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

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

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

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

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

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

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

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

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

在上面的示例代码中,我们创建了一个简单的登录页面,并使用 Session 来验证用户。如果用户输入的用户名和密码正确,则我们将用户名保存到 Session 中。

在首页中,我们将从 Session 中读取该用户名,并将其显示在欢迎消息中。如果用户未登录,则我们将重定向到登录页面。如果用户注销,则我们将从 Session 中删除该用户名,并再次重定向到登录页面。

总结

在本文中,我们学习了如何在 Express.js 中启用 Session,并介绍了如何向 Session 中存储数据和从 Session 中获取数据。我们还提供了示例代码以展示 Session 的使用方法和配置。通过使用 Session,我们可以跨请求安全地存储数据,并在需要时对其进行访问。

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

纠错
反馈