第三方中间件

1:cookie-parser;

2:express-session;

3:http-errors;

4:serve-favicon;

5:svg-captcha;

 

 

cookie的特点:

  保存到客户端,容易被篡改(删除、禁用)

  保存的数据量有限的

  简单易懂好用

cookie和session的区别

  cookie是保存在客户端的

  session是保存在服务器端

  session更加安全

 

 

一:Cookie-parser

由于http协议是一种无状态的协议(客户端和服务端互相不认识)

cookie就是一个简单到爆思路:当客户端访问服务器时,服务器生成一个票据给客户端,当客户端收到票据之后,保存起来;以后客户端每次访问服务器的时候,都需要携带着这个票据。

 cookie的执行原理:当客户端访问服务器的时候(服务运用了cookie),则服务器会生成一份cookie传输给客户端,客户端会自动把cookie保存起来;以后客户端每次访问服务器,都会自动的携带着这份cookie。

1)安装

npm install cookie-parser

2)使用

var cookieParser = require('cookie-parser');

app.use(cookieParser());//使用cookie-parser

生成cookie:

/设置cookie
//在响应的时候,生成一份cookie(票据)
// res.cookie('xxcode',"abc");

取出cookie:

console..log(req.cookies);

加密cookie

var cookieParser = require('cookie-parser');

app.use(cookieParser("xiaoxuesheng"));//签名 (加密) 指定秘钥 "xiaoxuesheng"

//使用cookie
//加密存储
res.cookie("mycode","abc",{
  signed:true //加密
})

 

二:Express-session

session是一种特殊的cookie。cookie是保存在客户端的,而session是保存在服务端。

当客户端第一次请求服务器的时候,服务器生成一份session保存在服务端,将该数据(session)的id以cookie的形式传递给客户端;以后的每次请求,浏览器都会自动的携带cookie来访问服务器(session数据id)。

 1)安装

npm install express-session

2)使用

//引入session中间件
let expressSession=require("express-session")

//使用session中间件
app.use(expressSession({
  resave:true,//每次是否都刷新存储器
  saveUninitialized:true,
  secret:"xiaoxuesheng" //秘钥
}))

代码示例:

使用session存储数据:

//将数据存储到session中
req.session.yourcode='xyz';

取出session数据:

//取出存储的session
console.log(req.session);

三:Http-errors

错误处理中间件。

注意:错误处理中间件位于代码的最下方。

代码示例:

var createError = require('http-errors');

  // catch 404 and forward to error handler
app.use(function(req, res, next) {
  next(createError(404));
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  // res.locals.message = err.message;
  res.locals.message = "请检查你的请求地址";
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

四:serve-favion

通过serve-favicon可以指定服务器响应给前端浏览器的图标。

1)安装

npm install serve-favicon

2)引入

//引入第三方中间件
let favicon=require('serve-favicon');

3)使用

//使用第三方中间件
//指定响应给客户端的浏览器图标的路径
app.use(favicon(`${__dirname}/public/favicon.ico`))

五:Svg-captcha

利用svg-captcha中间件可以生成一个图形验证码.

1)安装

npm install svg-captcha

2)引入

//引入验证码中间件
let svgCaptha=require('svg-captcha')

代码示例

//使用svg-captcha中间件来完成接口
app.get('/code', (req, res) => {
  // let capthca=svgCaptha.create();//创建 实例化
  let capthca = svgCaptha.create({
  noise: 5, //干扰线条数
  size: 6,//验证码字符个数
  color: true, //字符颜色
  background: "yellow", //背景色
  ignoreChars: "0oiIz21" //忽略的字符
});

  console.log(capthca.text);//生成文字版

  res.type("svg");//设置头信息 指定响应资源为图片类型
  //生成图片版 catpcha.data
  res.send(capthca.data)
})

posted @ 2021-12-28 20:06  钰抌  阅读(124)  评论(0)    收藏  举报