Diez conceptos básicos del nodo: control de sesión

cookie, sesión, token

1. galleta

Una cookie es un pequeño fragmento de datos enviado por el servidor al cliente.

Las cookies se guardan según los nombres de dominio.

Características: al enviar una solicitud al servidor, la cookie se configurará automáticamente en el encabezado de la solicitud y se destruirá cuando se cierre el navegador.

// 设置 cookie
res.cookie('name', 'lisi', { maxAge: 1000 * 60 })
// 删除 cookie
res.clearCookie('name');
// 获取 cookie
npm i cookie-parser
const cookieParser = require("cookie-parser");
app.use(cookieParser());
req.cookies; // { name: 'lisi' }

2. sesión

La sesión es un dato almacenado en el servidor.

Proceso: después de iniciar sesión, el servidor guarda [{ sid: 'xxxx', nombre de usuario: 'lisi', user_id: '1' }], guarda el valor de sid configurando una cookie y envía una solicitud la próxima vez con una cookie. para determinar la identidad del usuario a través de sid

// 设置 session 中间件,生成 sessionId
npm i express-session connect-mongo
const session = require("express-session");
const MongoStore = require("connect-mongo");
app.use(session{
  name: 'sid', // 设置cookie的name
  secret: "yqcoder", // 参与加密的字符串
  saveUninitializad: false, // 是否为每一个请求都设置cookie
  resave: true, // 是否在每次请求后重新保存session
  store: MongoStore({
    mongoUrl: 'mongodb://127.0.0.1:27017/demo'
  }),
  cookie: {
    httpOnly: true, // 开启后前端无法通过js操作
    maxAge: 1000 * 60 // 过期时间
  }
})

// 设置 session 信息
// req.query.username 获取url上的参数
req.session.username = 'yqcoder';
req.session.uid = '888';

// 读取 session 信息
req.session.username

// 销毁 session
req.session.destroy(() => {})

3. La diferencia entre cookie y sesión.

Ubicación de almacenamiento

cookie: navegador

sesión: servidor

seguridad

cookie: menos segura

sesión: relativamente buena

transmisión de red

cookie: demasiado contenido, lo que afecta la eficiencia de la transmisión

sesión: no afecta la eficiencia de la transmisión

límite de almacenamiento

galleta: no más de 4k

sesión: sin límite

4. cifrado unidireccional de contraseña md5

npm i md5
const md5 = require("md5");
md5(req.body.password);

5. ficha

El token es una cadena de cadenas cifradas generadas por el servidor y devueltas al cliente, y la información del usuario se almacena en el token.

Características: menos presión en el lado del servidor, relativamente más seguro y más escalable

npm i jsonwebtoken
const jwt = require("jsonwebtoken");

// 创建 token
// jwt.sign(用户数据, 加密字符串, 配置对象)
let token = jws.sign({
  username: 'lisi'
}, 'yqcoder', {
  expiresIn: 60 // 单位秒
})

// 解析 token
let token = req.get('token');
jwt.verify(token, 'yqcoder', (err, data) => {})

Supongo que te gusta

Origin blog.csdn.net/weixin_64684095/article/details/132670022
Recomendado
Clasificación