在 Web 开发中,常常需要保存一些用户信息以便完成用户身份认证、会话等功能。Cookie 和 Session 是最常用的两种方式,本文将针对 Express.js 框架介绍如何使用 Cookie 和 Session。
什么是 Cookie 和 Session
- Cookie:是客户端保存数据的一种方式,浏览器向服务器发送请求时,会把 Cookie 值传递给服务器。
- Session:是服务器保存数据的一种方式,服务器上保存一个 Session 对象,它保存着客户端请求的一些信息。
设置 Cookie
在 Express.js 中使用 Cookie,需要安装 cookie-parser 中间件。在开发中使用下面的命令进行安装:
npm install cookie-parser --save
在代码中引入中间件:
const cookieParser = require('cookie-parser'); app.use(cookieParser());
通过 response 对象,可以设置 Cookie:
res.cookie(name, value [, options])
- name:Cookie 名称
- value:Cookie 值
- options:配置选项,例如 Cookie 的有效期、域名等等。
设置 Cookie:
res.cookie('name', 'value');
设置包含选项的 Cookie:
res.cookie('name', 'value', { maxAge: 900000, httpOnly: true });
读取 Cookie
通过 request 对象可以读取 Cookie:
req.cookies
读取 Cookie:
app.get('/', (req, res) => { console.log(req.cookies); });
设置 Session
在 Express.js 中使用 Session,需要安装 express-session 中间件。在开发中使用下面的命令进行安装:
npm install express-session --save
在代码中引入中间件:
const session = require('express-session'); app.use(session({ secret: 'keyboard cat', // session 加密的密钥 resave: false, // 是否重新保存会话 saveUninitialized: true, // 是否保存未初始化的会话 cookie: { secure: true } // 是否仅通过 HTTPS 分配 cookie }));
读写 Session
Session 是存储在服务器端的数据,因此可以安全地存储用户的敏感信息。通过 req.session 对象可以访问用户的 Session 数据。
设置 Session:
app.get('/', (req, res) => { req.session.name = 'value'; });
读取 Session:
app.get('/', (req, res) => { console.log(req.session.name); });
示例代码
设定 Cookie:
const express = require('express'); const cookieParser = require('cookie-parser'); const app = express(); app.use(cookieParser()); app.get('/', (req, res) => { res.cookie('name', 'value', { maxAge: 900000, httpOnly: true }); res.send('Cookie set successfully!'); }); app.listen(3000, () => console.log('Server is running on http://localhost:3000'));
读取 Cookie:
const express = require('express'); const cookieParser = require('cookie-parser'); const app = express(); app.use(cookieParser()); app.get('/', (req, res) => { console.log(req.cookies); res.send('Cookie sent to console'); }); app.listen(3000, () => console.log('Server is running on http://localhost:3000'));
设置 Session:
const express = require('express'); const session = require('express-session'); const app = express(); app.use(session({ secret: 'keyboard cat', resave: false, saveUninitialized: true, cookie: { secure: true } })); app.get('/', (req, res) => { req.session.name = 'value'; res.send('Session set successfully!'); }); app.listen(3000, () => console.log('Server is running on http://localhost:3000'));
读取 Session:
const express = require('express'); const session = require('express-session'); const app = express(); app.use(session({ secret: 'keyboard cat', resave: false, saveUninitialized: true, cookie: { secure: true } })); app.get('/', (req, res) => { console.log(req.session.name); res.send('Session sent to console!'); }); app.listen(3000, () => console.log('Server is running on http://localhost:3000'));
总结
文章介绍了如何在 Express.js 中使用 Cookie 和 Session。Cookie 适用于客户端存储数据,Session 适用于服务器端存储数据。通过代码示例展示了如何设置、读取 Cookie 和 Session。
掌握了这些基础知识后,你将可以基于 Cookie 和 Session 开发更加灵活、功能更加强大的 Web 应用程序。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65b9da87add4f0e0ff264d30