SVG-captcha验证码在node中的应用

良心推荐吧!觉得比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('验证码错误')
		}
发布了79 篇原创文章 · 获赞 36 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/yezi__6/article/details/105276100