Express.js 中如何使用 Cookie 与 Session

阅读时长 7 分钟读完

在 Web 开发中,Cookie 与 Session 是常用的状态管理方式。在 Express.js 中,我们可以轻松地使用 Cookie 与 Session 来管理用户的登录状态、购物车信息等。

Cookie

Cookie 是一种在客户端存储数据的方式。它可以存储简单的数据类型,如字符串、数字等。在 Express.js 中,我们可以使用 cookie-parser 中间件来解析 Cookie。

安装 cookie-parser

使用以下命令来安装 cookie-parser

使用 cookie-parser

在 Express.js 中使用 cookie-parser,我们需要先引入它:

然后,在 Express.js 的应用程序中使用它:

这样,我们就可以在请求中访问 Cookie 了。例如,我们可以在路由中设置一个 Cookie:

这将在客户端设置一个名为 username 值为 John Doe 的 Cookie。

读取 Cookie

要读取 Cookie,我们可以使用 req.cookies 对象。例如,我们可以在路由中读取名为 username 的 Cookie:

这将在客户端显示 Hello John Doe

设置 Cookie 的选项

我们可以设置 Cookie 的选项,例如过期时间、域名、路径等。以下是一些常见的 Cookie 选项:

  • maxAge: Cookie 的过期时间,单位为毫秒。
  • expires: Cookie 的过期时间,可以是一个日期对象或一个时间戳。
  • path: Cookie 的路径,默认为 '/'
  • domain: Cookie 的域名。
  • secure: 如果为 true,则只有在使用 HTTPS 协议时才发送 Cookie。
  • httpOnly: 如果为 true,则只能通过 HTTP 协议访问 Cookie,不能通过 JavaScript 访问。

例如,我们可以设置一个过期时间为一小时的 Cookie:

Session

Session 是一种在服务器端存储数据的方式。它可以存储复杂的数据类型,如对象、数组等。在 Express.js 中,我们可以使用 express-session 中间件来实现 Session。

安装 express-session

使用以下命令来安装 express-session

使用 express-session

在 Express.js 中使用 express-session,我们需要先引入它:

然后,在 Express.js 的应用程序中使用它:

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

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

这样,我们就可以在请求中访问 Session 了。例如,我们可以在路由中设置一个 Session:

这将在服务器端设置一个名为 username 值为 John Doe 的 Session。

读取 Session

要读取 Session,我们可以使用 req.session 对象。例如,我们可以在路由中读取名为 username 的 Session:

这将在客户端显示 Hello John Doe

销毁 Session

要销毁 Session,我们可以使用 req.session.destroy() 方法。例如,我们可以在路由中销毁 Session:

这将销毁当前用户的 Session。

示例代码

以下是一个完整的示例代码,演示了如何使用 Cookie 与 Session:

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

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

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

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

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

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

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

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

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

总结

在 Express.js 中,我们可以使用 cookie-parser 中间件来解析 Cookie,使用 express-session 中间件来实现 Session。通过使用 Cookie 和 Session,我们可以在客户端和服务器端之间轻松地传递数据,从而实现状态管理。

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

纠错
反馈