koa2实现简单的验证码

//首先引入svg-captcha,https://www.npmjs.com/package/svg-captcha
const svgCaptcha = require('svg-captcha);
const koa = require('koa');
const router = require('koa-router')();
const bodyparser = require('koa-bodyParser');
var session = require('koa-session'); var app = new koa(); app.use(bodyparser());
router.get(
'/code',async(ctx)=>{ var captcha = svgCaptcha.create({ size:6,//验证码个数 fontSize:50,//验证码字体大小 width:100,//宽度 heigth:40,//高度 background:'#cc9966'//背景大小 }); ctx.response.type="image/svg+xml";//设置返回的数据格式 ctx.body = captcha.data; });
app.use(router.routes());
app.use(router.allowedMethods());
app.use(session({
  keys:'koa:sess',
  maxAge:10000
},app));
app.listen(80);

访问localhost/code,效果如下:

 

在html中,可以插入如下代码:

<img id="code" src=“localhost/code”/>

实际上我们要实现的效果是点击一次图片即可刷新一次验证码,具体实现机制是利用随机函数作为随机参数访问该地址,并且为该元素添加绑定事件

所以实际的html代码如下行:

<img id="code" src="localhost/code?t="+Math.random()*1000 />

JS代码如下:

var code = document.getElementById("code");
code.onclick = ()=>{
    code.getAttribute('src','localhost/code');
};

那么如何在提交表单之后实现验证呢,实现原理是在访问localhost/code之后,后端将验证码设置到session中即可,

router.get('/code',async(ctx)=>{
    var captcha = svgCaptcha.create({
           size:6,//验证码个数
           fontSize:50,//验证码字体大小
           width:100,//宽度
           heigth:40,//高度
           background:'#cc9966'//背景大小
    });

    ctx.response.type="image/svg+xml";//设置返回的数据格式
    ctx.session.code = captcha.text;//把验证码赋值给session
    ctx.body = captcha.data;
    
});
posted @ 2019-12-12 11:04  ChienPop  阅读(948)  评论(0编辑  收藏  举报