一、cookie-parser
cookie的使用方式:
- 安装cookie-parser中间件
npm i cookie-parser
- 引入cookie-parser中间件
const cookieParser = require('cookie-parser')
- 设置cookie-parser中间件
const express = require('express')
const app = express();
app.use(cookieParser()); //设置中间件
- 生成cookie
res.cookie('code',"cook");
- 获取cookie
req.cookies
二、express-session
session的使用方式:
- 安装express-session中间件
npm i express-session
- 引入express-session中间件
const expresion = require('express-session')
- 设置express-session中间件
const express = require('express')
const app = express();
app.use(expressSession({
resave:true,//每次是否都刷新存储器
saveUninitialized:true,
secret:"xiaoxuesheng" //加密
})) //设置中间件
- 生成session
req.session.mycode='z1z2'
- 获取session
req.session
案例:
//引入session
let cookiesSession = require('express-session');
//设置session
app.use(cookiesSession({
resave: true,//每次是否都刷新存储器
saveUninitialized: true,
secret: 'cookies'//密钥
}))
let express = require('express');
let router = express.Router();
let svg = require('svg-captcha');
//验证码
router.get('/authCode', (req, res) => {
let svgCap = svg.create(); //初始化
req.session.mycode = svgCap.text;
res.type('svg');
res.send(svgCap.data);
})
//登录
router.get('/login', (req, res) => {
let { username = '', pwd = '', code = '' } = req.query;
let mycode = req.session.mycode;
if (mycode.toLowerCase() != code.toLocaleLowerCase()) {
console.log(mycode);
res.send("验证码错误")
return;
}
res.send("登录成功");
})
三、cookie 和 session 的区别
1.cookie 存在于客户端,session存在于服务器端
2.特点:
-
cookie:
- 保存到客户端,容易被篡改(删除、禁用)
- 保存的数据量有限的
- 简单易懂好用
-
session
- 保存在服务器端
- 数据量无无限制
- 安全性更高