Express.js 中 cookie 和 session 的使用详解

阅读时长 7 分钟读完

前言

在客户端与服务器进行交互时,常常需要对用户状态和身份进行识别和维护。而 cookie 和 session 便是常用的两种解决方案。在 Express.js 中,cookie 和 session 的使用也非常方便。本文将对这两种技术进行详细的讲解,包括原理、使用方法和示例代码,以便初学者能够快速上手。

cookie

cookie 是一种保存在客户端的小型文本文件,通常用于记录用户的身份、偏好和浏览历史等信息。在客户端发送请求时,这些信息会被一同发送到服务器端,以便服务器端能够做出相应的响应。在 Express.js 中,可以使用 cookie-parser 中间件对 cookie 进行解析和设置。

安装和使用

使用 npm 可以轻松地安装 cookie-parser 中间件。

在使用的时候,需要先引入该中间件然后使用 app.use() 将其注册进应用程序中。基本使用如下所示:

设置 cookie

设置 cookie 可以使用 res.cookie() 方法,方法接收三个参数,分别是 cookie 的名称、值和一些属性选项,如过期时间、域名、路径、安全等级等。示例如下:

获取 cookie

获取 cookie 可以使用 req.cookies 对象,该对象保存了所有客户端发送的 cookie。示例如下:

删除 cookie

删除 cookie 可以使用 res.clearCookie() 方法,该方法接收 cookie 的名称作为参数即可。示例如下:

session

与 cookie 不同,session 是一种在服务器端保存状态的解决方案。在 Express.js 中,可以使用 express-session 中间件对 session 进行解析和设置。

安装和使用

使用 npm 可以轻松地安装 express-session 中间件。

在使用的时候,需要先引入该中间件然后使用 app.use() 将其注册进应用程序中。基本使用如下所示:

中间件接收一个对象,其中 secret 属性表示加密密钥,resave 属性表示是否在每个请求结束时都重新保存 session,saveUninitialized 属性表示是否在未初始化 session 时自动保存。这些参数的含义可以根据具体的情况进行配置。

设置 session

设置 session 可以直接将属性赋值给 req.session 对象即可。示例如下:

获取 session

获取 session 可以直接从 req.session 对象中获取。示例如下:

删除 session

删除 session 可以使用 req.session.destroy() 方法,该方法会立即将 session 销毁,示例如下:

示例代码

下面是一个完整的示例代码,包括设置 cookie 和 session 的过程。其中,当用户访问 /login 时会设置 cookie 和 session,当用户访问 / 时会从 cookie 和 session 中获取数据。当用户访问 /logout 时会删除 cookie 和 session。示例代码如下:

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

总结

在 Express.js 中,cookie 和 session 是维护用户状态和身份的两种强大的解决方案。通过 cookie-parser 和 express-session 中间件,我们可以轻松地对 cookie 和 session 进行解析和设置。本文详细讲解了 cookie 和 session 的使用方法和示例代码,希望对初学者们有所帮助。

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

纠错
反馈