//首先引入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; });

koa2实现简单的验证码的更多相关文章

  1. 学习笔记:利用GDI+生成简单的验证码图片

    学习笔记:利用GDI+生成简单的验证码图片 /// <summary> /// 单击图片时切换图片 /// </summary> /// <param name=&quo ...

  2. ThinkPHP简单的验证码实现

    ThinkPHP简单的验证码实现 写一个最简单的TP验证码. 写Controller 首先在Controller/IndexController.class.php(简称Index)文件中编辑: &l ...

  3. python 简单图像识别--验证码

    python  简单图像识别--验证码 记录下,准备工作安装过程很是麻烦. 首先库:pytesseract,image,tesseract,PIL windows安装PIL,直接exe进行安装更方便( ...

  4. Flask学习之旅--用 Python + Flask 制作一个简单的验证码系统

    一.写在前面 现在无论大大小小的网站,基本上都会使用验证码,登录的时候要验证,下载的时候要验证,而使用的验证码也从那些简简单单的字符图形验证码“进化”成了需要进行图文识别的验证码.需要拖动滑块的滑动验 ...

  5. Python 常用模块系列学习(1)--random模块常用function总结--简单应用--验证码生成

    random模块--random是一个生成器 首先: import random    #导入模块 print (help(random))    #打印random模块帮助信息 常用function ...

  6. python简单处理验证码,三分钟,不能再多了

    序言 大家好鸭, 又是我小熊猫啦 我们在做采集数据的时候,过快或者访问频繁,或者一访问就给弹出验证码,然后就蚌珠了~今天就给大家来一个简单处理验证码的方法 环境模块 Python和pycharm如果还 ...

  7. Webdriver配合Tesseract-OCR 自动识别简单的验证码

    验证码: 如下,在进行自动化测试,遇到验证码的问题,一般有两种方式 1.找开发去掉验证码或者使用万能验证码 2.使用OCR自动识别 使用OCR自动化识别,一般识别率不是太高,处理一般简单验证码还是没问 ...

  8. Python——pytessercat识别简单的验证码

    什么是验证码 验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computersand Humans Apart” (全自动 ...

  9. 使用python以及工具包进行简单的验证码识别

    识别数字验证码 首先我们准备素材,4张验证码图片如下:     第一步: 打开图像. im = Image.open('temp1.jpg')   第二步: 把彩色图像转化为灰度图像.彩色图像转化为灰 ...

随机推荐

  1. 洛谷2501 BZOJ1801中国象棋题解

    题目链接 BZ链接 其实dp只要把状态想好后转移就很好写了(flag*1) f[i][j][k]表示到了第i行,有j列放了一个跑,有k列放了两个跑的方案总数 然后大力讨论,转移即可 # include ...

  2. 谷歌好样的,把 www 也干掉了

    谷歌好样的,把 www 也干掉了 继把 http 干掉后,这次 Chrome 76 连 https 和 www 都一起干掉了. 喜欢简洁,但这个功能演化过程可不简单. 最早觉得把 http 干掉很不方 ...

  3. 三角形数且是完全平方数 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛 E.Half-consecutive Numbers

    三角形数:an=n*(n+1)/2; 完全平方数:bn=c^2; 既是三角形数又是完全平方数:An=6*A(n-1)-A(n-2)+2; A[23]={ 0, 1, 8, 49, 288, 1681, ...

  4. @uoj - 435@ 【集训队作业2018】Simple Tree

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 有一棵有根树,根为 1,点有点权. 现在有 m 次操作,操作有 ...

  5. js+canvas五子棋人机大战ai算法

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. python 自动识别黄图

    from watchdog.observers import Observerfrom watchdog.events import *import timeimport sysimport osim ...

  7. HZOJ 星际旅行

    正解欧拉路,其实看完题解还是挺简单的,由于对欧拉路这种东西没怎么接触过,所以考试时没想出来,知识还是有漏洞啊. 另外这题的题解写的也不是很清楚(可能大佬作者觉得这是一道送分题……),首先判断联通(注意 ...

  8. 仿IOS效果-带弹簧动画的ListView

    背景介绍 最近项目打算做一个界面,类似于dayone首页的界面效果,dayone 是一款付费应用,目前只有IOS端.作为一个资深懒惰的程序员,奉行的宗旨是绝对不重复造一个轮子.于是乎,去网上找一大堆开 ...

  9. 深度学习——Xavier初始化方法

    “Xavier”初始化方法是一种很有效的神经网络初始化方法,方法来源于2010年的一篇论文<Understanding the difficulty of training deep feedf ...

  10. H3C 命令行帮助特性(续)