良心推荐吧!觉得比ccap的图片验证码便捷许多,不用什么python,c++的环境。切身感受,用ccap搞环境搞了将近一天都没弄好,报错层出不穷。心累得。。。
下面呢?说一下很快搞好的这个可耐验证码吧
1.创建captcha.js,生成验证码
var captcha={};
var cache={};
captcha.captcha=async function(ctx,next){
const svgCaptcha = require('svg-captcha');//验证码
var capt = svgCaptcha.create({
color:true,
noise:3,
ignoreChars:'0oli',
size:4
});
ctx.body=capt.data;
var num=capt.text;
captcha.setCache(ctx.cookies.get('userId'),num)
}
//保存验证码,是在访问页面时设置,若第三方不访问前端页面
//如果验证码是空的,id也是空的还是会认为是正确的
captcha.setCache=function(uid,data){
cache[uid]=data;
console.log(uid,data)
}
//验证
captcha.validCache=function(uid,data){
return cache[uid]===data;
}
module.exports =captcha;
2.在koa框架中使用验证码,向前端提供接口:router.js
const Router = require('koa-router');
const router = new Router({
prefix: ''
});
const captcha=require('../tools/captcha')
router.get('/captcha',captcha.captcha);
module.exports = router;
3.在前端表单中使用:
iframe(src="/captcha",width="180",height="70")
4.后端逻辑获取表单数据,得到验证码,调用captcha.validCache验证是否正确
if(!data.captcha){
throw new Error('验证码为空,错误')
}
//验证是否报错
var captcha=require('../tools/captcha');
var resultCaptcha=captcha.validCache(ctx.cookies.get('userId'),data.captcha);
console.log('result',resultCaptcha)
if(!resultCaptcha){
throw new Error('验证码错误')
}