在做用户登录的时候需要使用验证码,于是找度娘了解了一下,这里使用nodejs+express+svg-captcha 实现验证码
1.安装svg-captcha依赖,.后续过程需要使用到session,所以要安装express-session依赖,session的认证机制必须依赖cookie,所以还应该同时安装一个cookie-parser
//node 必须安装的依赖
npm install --save svg-captcha
npm install --save cookie-parser
npm install --save express-session
2之后定义cookie解析器,注意,该定义必须写在路由分配之前:
const express = require("express");
var session = require('express-session');
var cookieParser = require('cookie-parser');
const bodyParser = require("body-parser");
const app = new express();
app.use(cookieParser());
app.use(session({
secret: 'secret', // 对session id 相关的cookie 进行签名
resave: true,
saveUninitialized: false, // 是否保存未初始化的会话
cookie: {
maxAge: 1000 * 60 * 3, // 设置 session 的有效时间,单位毫秒
},
}));
app.use(bodyParser.json({ limit: '50mb' }));
app.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));
3.验证码获取接口,将验证码存储在session中,并将生成验证码后返回给前端
app.post('/admin/captcha', function (req, res) {
var captcha = svgCaptcha.create({
size: 4, //验证码长度
width: 100, //svg宽度
height: 50, //svg高度
// background: "#eee",//svg背景色
noise: 2, //干扰线条数
fontSize: 35, //字体大小
ignoreChars: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxz', //验证码字符中排除
color: false // 验证码的字符是否有颜色,默认没有,如果设定了背景,则默认有
});
req.session.captcha = captcha.text;
res.type('svg');
res.status(200).send({
code: 200,
result: captcha.data
});
});
到这一步已经能够在前台显示验证码了,要登录验证的时候只需把表单的值传给后端验证就行啦,上面的获取验证码接口已经将验证码存在session里面了,只需要从req,session.captcha获取就可以了,此时验证码区分大小写.。
通过接口返回的是一个SVG格式的图片地址。