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;
    
});


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM