在 Web 开发中,Cookie 与 Session 是常用的状态管理方式。在 Express.js 中,我们可以轻松地使用 Cookie 与 Session 来管理用户的登录状态、购物车信息等。
Cookie
Cookie 是一种在客户端存储数据的方式。它可以存储简单的数据类型,如字符串、数字等。在 Express.js 中,我们可以使用 cookie-parser
中间件来解析 Cookie。
安装 cookie-parser
使用以下命令来安装 cookie-parser
:
--- ------- -------------
使用 cookie-parser
在 Express.js 中使用 cookie-parser
,我们需要先引入它:
----- ------------ - -------------------------
然后,在 Express.js 的应用程序中使用它:
----- ------- - ------------------- ----- --- - ---------- ----- ------------ - ------------------------- ------------------------
这样,我们就可以在请求中访问 Cookie 了。例如,我们可以在路由中设置一个 Cookie:
------------ ----- ---- -- - ---------------------- ----- ------ ---------------- ------ ---
这将在客户端设置一个名为 username
值为 John Doe
的 Cookie。
读取 Cookie
要读取 Cookie,我们可以使用 req.cookies
对象。例如,我们可以在路由中读取名为 username
的 Cookie:
------------ ----- ---- -- - ----- -------- - --------------------- --------------- -------------- ---
这将在客户端显示 Hello John Doe
。
设置 Cookie 的选项
我们可以设置 Cookie 的选项,例如过期时间、域名、路径等。以下是一些常见的 Cookie 选项:
maxAge
: Cookie 的过期时间,单位为毫秒。expires
: Cookie 的过期时间,可以是一个日期对象或一个时间戳。path
: Cookie 的路径,默认为'/'
。domain
: Cookie 的域名。secure
: 如果为true
,则只有在使用 HTTPS 协议时才发送 Cookie。httpOnly
: 如果为true
,则只能通过 HTTP 协议访问 Cookie,不能通过 JavaScript 访问。
例如,我们可以设置一个过期时间为一小时的 Cookie:
------------ ----- ---- -- - ---------------------- ----- ----- - ------- ------- --- ---------------- ------ ---
Session
Session 是一种在服务器端存储数据的方式。它可以存储复杂的数据类型,如对象、数组等。在 Express.js 中,我们可以使用 express-session
中间件来实现 Session。
安装 express-session
使用以下命令来安装 express-session
:
--- ------- ---------------
使用 express-session
在 Express.js 中使用 express-session
,我们需要先引入它:
----- ------- - ---------------------------
然后,在 Express.js 的应用程序中使用它:
----- ------- - ------------------- ----- --- - ---------- ----- ------- - --------------------------- ----------------- ------- -------------- ------- ------ ------------------ ---- ----
这样,我们就可以在请求中访问 Session 了。例如,我们可以在路由中设置一个 Session:
------------ ----- ---- -- - -------------------- - ----- ----- ----------------- ------ ---
这将在服务器端设置一个名为 username
值为 John Doe
的 Session。
读取 Session
要读取 Session,我们可以使用 req.session
对象。例如,我们可以在路由中读取名为 username
的 Session:
------------ ----- ---- -- - ----- -------- - --------------------- --------------- -------------- ---
这将在客户端显示 Hello John Doe
。
销毁 Session
要销毁 Session,我们可以使用 req.session.destroy()
方法。例如,我们可以在路由中销毁 Session:
------------ ----- ---- -- - ---------------------- ----------------- ------------ ---
这将销毁当前用户的 Session。
示例代码
以下是一个完整的示例代码,演示了如何使用 Cookie 与 Session:
----- ------- - ------------------- ----- ------------ - ------------------------- ----- ------- - --------------------------- ----- --- - ---------- ------------------------ ----------------- ------- -------------- ------- ------ ------------------ ---- ---- ------------ ----- ---- -- - -- -- ------ ---------------------- ----- ----- - ------- ------- --- -- -- ------- -------------------- - ----- ----- -- -- ------ - ------- ----- ------------------ - --------------------- ----- ------------------- - --------------------- -- -- ------- ---------------------- ----------------- ---------------------- -------- ------------------------- --- ---------------- -- -- - ------------------- ------- -- ---- ------- ---
总结
在 Express.js 中,我们可以使用 cookie-parser
中间件来解析 Cookie,使用 express-session
中间件来实现 Session。通过使用 Cookie 和 Session,我们可以在客户端和服务器端之间轻松地传递数据,从而实现状态管理。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/661348f6d10417a2223ac019