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