介绍
在 Web 应用程序中保存状态信息对于用户而言是非常重要的。例如,要在应用中保持用户的登录状态,或者将用户的浏览历史或购物车信息保存在服务器中,以便用户可以随时访问。
本文将介绍如何在 Express.js 中使用 Cookie 和 Session 来管理状态信息。
什么是 Cookie?
Cookie 是 Web 服务器用于在客户端存储信息的一种机制。当 Web 服务器返回响应时,它可以在响应中包含一个名为 Set-Cookie
的标头,以将一个或多个 Cookie 发送回客户端。客户端将保存这些 Cookie 并在所有访问同一域的请求中发送它们。
每个 Cookie 都由名称、值、过期时间和其他可选属性组成。Cookie 只能存储少量文本数据,例如用户的首选语言或网站的主题。Cookie 不能用于存储敏感信息,例如密码或信用卡信息。
以下代码演示如何创建和设置一个 cookie:
res.cookie('name', 'value', { maxAge: 900000, httpOnly: true });
这里我们使用 res.cookie
函数创建一个新的 Cookie,第一个参数是 Cookie 的名称,第二个参数是 Cookie 的值,第三个参数是可选的配置项,例如 Cookie 的过期时间和安全设置(httpOnly
选项指定 cookie 是否仅通过 HTTP 连接而不能在客户端使用 JavaScript 访问)。
要从请求中读取 cookie,我们可以使用 req.cookies
对象:
console.log(req.cookies.name);
以上示例将输出 name
Cookie 的值。
什么是 Session?
Session 与 Cookie 类似,但它们可以存储更大的数据,例如用户的最近活动和购物车信息。它还提供了更多的安全性和控制,例如在每个请求上重新生成会话 ID,以防止会话劫持攻击。
Express.js 使用 express-session
模块来创建和管理用户会话。要使用 express-session
,需要使用 npm 安装它:
npm install express-session
现在,我们来看一个简单的示例,演示如何在 Express.js 应用程序中使用 express-session
:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ------- - --------------------------- ----- --- - ---------- ----------------- ------- ---------------- ------- ------ ------------------ ----- ------- - ------- ---- - ---- ------------ ----- ---- -- - ----- - ------- - - ---- -- --------------- - ---------------- ------------- ---------------- -------- - ---- - ------------- - -- ----------------------- - --- ---------------- -- -- - --------------------- ---
在以上示例中,我们首先在应用程序中使用 express-session
中间件,以便在请求中使用 req.session
访问客户端的会话。
然后,我们在 '/' 路由处理程序中使用 req.session
对象来跟踪用户对应用程序的访问。如果客户端已经有 session.views,则将其增加 1,否则将 session.views 初始化为 1,并返回欢迎消息。
总结
通过使用 Cookie 和 Session,我们可以在 Express.js 应用程序中存储和管理会话状态信息。虽然它们都提供了在客户端存储数据的方式,但 Cookie 通常用于存储轻量级数据,而 Session 通常用于存储更多的数据,如购物车或个人资料信息。
在使用这些功能时,请注意安全性。如有必要,请将 Cookie 和 Session 的过期时间设置为较短的时间,并避免在 Cookie 中存储敏感数据。
参考资料
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65af7a7dadd4f0e0ff8eba2e