//首先引入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. Effective C++: 07模板与泛型编程

    C++ template机制自身是一部完整的图灵机(Turing-complete):它可以被用来计算任何可计算的值.于是导出了模板元编程(TMP, template metaprogramming) ...

  2. tyvj1017 冗余关系

    描述 Mrs.Chen是一个很认真很称职的语文老师 ......所以,当她看到学生作文里的人物关系描述得非常的麻烦的时候,她非常生气,于是宣布:凡是作文里有冗余关系的,一率罚抄出师表10次...同学们 ...

  3. mysql的执行计划概念说明

    explain中的列的说明 1. id列 id列的编号是 select 的序列号,有几个 select 就有几个id,并且id的顺序是按 select 出现的 顺序增长的. id列越大执行优先级越高, ...

  4. UVa 10520【递推 搜索】

    UVa 10520 哇!简直恶心的递推,生推了半天..感觉题不难,但是恶心,不推出来又难受..一不小心还A了[]~( ̄▽ ̄)~*,AC的猝不及防... 先递推求出f[i][1](1<=i< ...

  5. 20-2 orm分组和聚合以及在项目中执行的一些方法

    一  orm分组和聚合 参考:https://www.cnblogs.com/liwenzhou/p/8660826.html 1 表结构: # 第一张表 class Employee1(models ...

  6. uva 11916 Emoogle Grid (BSGS)

    UVA 11916 BSGS的一道简单题,不过中间卡了一下没有及时取模,其他这里的100000007是素数,所以不用加上拓展就能做了. 代码如下: #include <cstdio> #i ...

  7. Libev源码分析01:Libev中的监视器结构(C结构体实现继承)

    在Libev的源码中,用到了一种用C实现类似C++中继承的技巧,主要是用宏和结构体实现. 在Libev中,最关键的数据结构就是各种监视器,比如IO监视器,信号监视器等等.这些监视器的多数成员都是一样的 ...

  8. dubbo开启access log步骤

    1,maven依赖 maven version由2.5.3调整为2.5.3.2 <dependency>     <groupId>com.alibaba</groupI ...

  9. 2019-7-29-NetBIOS-计算机名称命名限制

    title author date CreateTime categories NetBIOS 计算机名称命名限制 lindexi 2019-07-29 09:59:17 +0800 2018-12- ...

  10. settTimeout vs setInterval

    setTimeout:过一段固定的时间后,将代码提交到代码队列中排队. setInterval:每隔一段固定的时间,执行一次代码. 他们两都接受两个参数,第一个参数是字符串或者函数,第二个参数是设定的 ...