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
是一个随机密钥,用于对会话数据进行加密。resave
和 saveUninitialized
分别表示每次请求是否重新保存 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