Express.js 中的 Cookie 和 Session 指南

阅读时长 4 分钟读完

前言

在 Web 应用开发过程中,用户状态的维护是一个非常重要的问题。比如,用户在登录成功后,需要在应用程序中维护他的登录状态,以便在后续的请求中识别该用户已经登录。为了实现这个目标,一种常见的解决方案是使用 Cookie 和 Session 技术。本文将详细介绍在 Express.js 中如何使用 Cookie 和 Session 来维护用户状态。

Cookie

Cookie 是服务器发送到客户端并存储在客户端本地的一个小文件,用于存储用户特定的信息。这些信息可以包括用户偏好、购物车内容或用户认证信息等。每个 Cookie 都有一个过期时间或有效期,到期后将被浏览器删除。

Express.js 使用 cookie-parser 库来读取和解析客户端发送的 Cookie。在 Express 应用中添加 cookie-parser 可以通过以下方式实现:

在调用 app.use(cookieParser()) 后,req.cookies 对象将可用,用于解析客户端发送的 Cookie。 下面为一个使用 Cookie 的简单示例:

在上面的示例中,如果客户端在请求中包含了名字为 name 的 Cookie,则向客户端发送欢迎回来信息。如果客户端没有发送名字为 name 的 Cookie,则发送一个新的 Cookie 到客户端,内容为 express

Session

Session 是在服务器端存储的一组数据,用于维护用户在应用中的状态。每个用户都会有一个唯一的 Session ID,这个 ID 在服务端和客户端都会被使用。Session 的工作原理是,在用户进行身份验证后,在服务器端创建一个 Session 对象,并向客户端发送一个包含 Session ID 的 Cookie。在后续的请求中,客户端会将这个 Cookie 发送回服务器,服务器会使用这个 Session ID 来查找对应的 Session 对象,以识别用户。

在 Express.js 中,可以使用 express-session 库来存储和维护 Session 信息。首先需要安装 express-session

然后在 Express 应用中添加以下代码:

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

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

使用 express-sessionsession() 方法将会为每个客户端创建一个 Session。上面的示例中,secret 选项用于设置 Session ID 加密密钥,避免 Session 被伪造。resavesaveUninitialized 选项用于设置 Session 的保存方式。

在创建了一个 Session 后,可以通过 req.session 对象来访问它。下面是一个使用 Session 的简单示例:

在上面的示例中,如果该客户端已经创建了一个 Session,那么向客户端发送欢迎回来信息。如果客户端没有创建 Session,则向客户端发送一个 Session,并在 Session 中保存名为 name 的字段,值为 express

总结

本文详细介绍了在 Express.js 中如何使用 Cookie 和 Session 来维护用户状态。Cookie 和 Session 技术有助于维护用户在应用中的状态,使得应用程序能够根据用户的特定属性来提供个性化的服务。希望本文能对读者了解 Express.js 中的 Cookie 和 Session 有所帮助,对实际开发工作具有指导和帮助意义。

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

纠错
反馈