返回

Cookie 与 Session 在 Node.js 鉴权中的应用

前端

Cookie 和 Session 是两种不同的鉴权方式,各有其优缺点。

Cookie

Cookie 是客户端存储在浏览器中的小块数据。它们通常用于跟踪用户的状态,例如登录状态或购物篮中的商品。Cookie 可以由服务器设置,也可以由客户端设置。

Session

Session 是服务器端存储的用户状态。Session 的目的是在用户浏览网站期间跟踪用户的状态。Session 数据存储在服务器上,而不是客户端。

Cookie 与 Session 的优缺点

特性 Cookie Session
存储位置 客户端 服务器端
安全性 不安全 安全
容量 有限 无限
依赖性 依赖 Cookie

如何在 Node.js 中使用 Cookie 和 Session

Cookie

要在 Node.js 中使用 Cookie,您可以使用 express-session 中间件。这个中间件会自动处理 Cookie 的设置和解析。

const express = require('express');
const session = require('express-session');

const app = express();

// 使用 express-session 中间件
app.use(session({
  secret: 'mySecret',
  resave: false,
  saveUninitialized: false,
}));

// 设置 Cookie
app.get('/set-cookie', (req, res) => {
  res.cookie('name', 'John Doe');
  res.send('Cookie set');
});

// 获取 Cookie
app.get('/get-cookie', (req, res) => {
  const name = req.cookies.name;
  res.send(`Cookie value: ${name}`);
});

app.listen(3000);

Session

要在 Node.js 中使用 Session,您可以使用 express-session 中间件。这个中间件会自动处理 Session 的设置和解析。

const express = require('express');
const session = require('express-session');

const app = express();

// 使用 express-session 中间件
app.use(session({
  secret: 'mySecret',
  resave: false,
  saveUninitialized: false,
}));

// 设置 Session
app.get('/set-session', (req, res) => {
  req.session.name = 'John Doe';
  res.send('Session set');
});

// 获取 Session
app.get('/get-session', (req, res) => {
  const name = req.session.name;
  res.send(`Session value: ${name}`);
});

app.listen(3000);

结论

Cookie 和 Session 是两种不同的鉴权方式,各有其优缺点。在 Node.js 中,您可以使用 express-session 中间件来轻松地使用 Cookie 和 Session。