第三方中间件
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保存在服务端,将该数据(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)
})
浙公网安备 33010602011771号