cookie-parser和express-session

234 阅读1分钟

一、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:

    1. 保存到客户端,容易被篡改(删除、禁用)
    2. 保存的数据量有限的
    3. 简单易懂好用
  • session

    1. 保存在服务器端
    2. 数据量无无限制
    3. 安全性更高