如何在 Express.js 中使用 Sessions

阅读时长 4 分钟读完

Express.js 是一个流行的 Node.js 框架,用于构建 Web 应用程序。在许多 Web 应用程序中,会使用 Sessions 来保持用户的登录状态和其他会话相关数据。本文将介绍如何在 Express.js 中使用 Sessions。

Sessions 是什么?

Session 是指在服务器上存储的用户状态信息,这些信息可以存储在内存中、数据库中或者在 Redis 等缓存中。Session 可以用于存储用户身份验证信息、购物车数据、用户个性化设置等。

Session 通常由服务器分配一个唯一的 ID,这个 ID 会在用户登录时存储在 Cookie 中,以便在用户浏览不同的页面时跟踪其状态信息。

在 Express.js 中生成 Session

首先使用 npm 安装 express-session 包:

然后在 app.js 或 index.js 中启用 Session 中间件:

上面的代码中,secret 是一个随机密钥,用于对会话数据进行加密。resavesaveUninitialized 分别表示每次请求是否重新保存 session 和是否在保存新的 session 之前先创建一个新的 session,建议将两个属性都设为 false,以便优化性能和减少存储空间的消耗。

在 Session 中存储数据

要在 session 中存储数据,可以使用 req.session 对象。例如,要在 session 中存储当前用户的用户名:

从 Session 中读取数据

要从 session 中读取数据,可以使用 req.session 对象。例如,要从 session 中读取保存的用户名:

Session 的生存周期

Session 的生存周期取决于浏览器关闭或者会话过期到期时间。过期时间可以在 Session 中间件的选项中设置。例如,将 session 过期时间设置为 1 小时:

验证 Session

使用 session 时,必须时刻记得验证 session 是否存在和有效。下面是一个示例验证 session 的中间件:

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

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

上面的代码中,requireLogin 是一个中间件函数,它检查 req.session.username 是否存在,如果不存在则返回 401 状态码。

总结

本文介绍了如何在 Express.js 中使用 Sessions。使用 Session 可以轻松地保存用户状态信息和其他会话相关数据。需要注意的是,每次请求都必须验证 Session 是否存在和有效,以保护应用程序免受会话劫持和其他安全问题的影响。

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

纠错
反馈