nodejs生成图形验证码可以自己写一个,我感觉比较麻烦,因为有现成的……下面我来介绍一下这个现成的验证码生成模块:svg-captcha
我个人觉得使用起来很方便,首先得需要安装svg-captcha。
代码语言:javascript复制var svgCaptcha = require("svg-captcha")
router.get('/getCode',function(req,res){
var codeConfig = {
size: 5,// 验证码长度
ignoreChars: '0o1i', // 验证码字符中排除 0o1i
noise: 2, // 干扰线条的数量
fontSize:42,
color:true,//开启文字颜色
background:"#cc9966",//背景色
width:150,
height: 44
}
var captcha = svgCaptcha.create(codeConfig);
req.session.captcha = captcha.text.toLowerCase(); //存session用于验证接口获取文字码
console.log(req.session.captcha)
var codeData = {
img:captcha.data
}
res.type('svg');
res.status(200).send(captcha.data);
})
上面的代码是生成一个四位的随机字母数字串,如果你想生成数学计算的字符串可以使用下面这个
代码语言:javascript复制svgCaptcha.createMathExpr(options);//options参数不变
与create api类似,有相同的选项和返回值,他的结果就是计算之后的结果。
如果你觉得他的字体不是太好看,你也可以选择使用自己的字体:
代码语言:javascript复制svgCaptcha.loadFont(url)
url则为你需要加载的字体路径。
关于nodejs中session的使用我们在之前已经介绍过了
使用的时候直接将该链接放在img的src中即可,刷新将后面的参数替换了,可以使用时间戳做参数,目的是为了清除浏览器缓存的影响。
代码语言:javascript复制<img src="http:127.0.0.1:3001/getCode?_v=1231" onclick="refish()"/>
在提交判断中只需要将session中的值获取出来和传过来的值进行对比即可,需要注意的是我们在存session的时候已经将其全部置为小写,获取过来的值也应该转换为小写以后再进行对比。