专栏首页OECOMnodejs实现图形验证码

nodejs实现图形验证码

nodejs生成图形验证码可以自己写一个,我感觉比较麻烦,因为有现成的……下面我来介绍一下这个现成的验证码生成模块:svg-captcha

我个人觉得使用起来很方便,首先得需要安装svg-captcha。

var svgCaptcha = require("svg-captcha")
router.get('/getCode',function(req,res){
var codeConfig = {
       size: 5,// 验证码长度
        ignoreChars: '0o1i', // 验证码字符中排除 0o1i
        noise: 2, // 干扰线条的数量
        fontSize:42,
        color:true,//开启文字颜色
        background:"#cc9966",//背景色
        width:150,
        height: 44
    }
    var captcha = svgCaptcha.create(codeConfig);

    req.session.captcha = captcha.text.toLowerCase(); //存session用于验证接口获取文字码
    console.log(req.session.captcha)
    var codeData = {
        img:captcha.data
    }
   res.type('svg');
    res.status(200).send(captcha.data);
})

上面的代码是生成一个四位的随机字母数字串,如果你想生成数学计算的字符串可以使用下面这个

svgCaptcha.createMathExpr(options);//options参数不变

与create api类似,有相同的选项和返回值,他的结果就是计算之后的结果。

如果你觉得他的字体不是太好看,你也可以选择使用自己的字体:

svgCaptcha.loadFont(url)

url则为你需要加载的字体路径。

关于nodejs中session的使用我们在之前已经介绍过了

使用的时候直接将该链接放在img的src中即可,刷新将后面的参数替换了,可以使用时间戳做参数,目的是为了清除浏览器缓存的影响。

<img src="http:127.0.0.1:3001/getCode?_v=1231" onclick="refish()"/>

在提交判断中只需要将session中的值获取出来和传过来的值进行对比即可,需要注意的是我们在存session的时候已经将其全部置为小写,获取过来的值也应该转换为小写以后再进行对比。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • nodejs的session管理

    在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下)。因此,在需要保存用户...

    无邪Z
  • js点击按钮返回页面顶部

    在进行官网一类的网站建设时,经常会出现页面太长的现象,当用户滚动滚动条到最底部时返回顶部需要滚动多下滚动条,用户体验相当不好,于是就出现了当滚动条滚动到一定位置...

    无邪Z
  • get和post的区别

    get和post有什么区别,很多人首先能说出来的就是传参方式的不同,GET把参数包含在URL中,POST通过request body传递参数。

    无邪Z
  • 图灵学习:首个只需要“看”就能学习的系统

    【新智元导读】谢菲尔德大学研究人员日前在学术期刊《群智能》(Swarm Intelligence)刊文,介绍了一个叫“图灵学习”的系统。研究人员表示,这是首个让...

    新智元
  • 如何在CentOS上安装MySQL

    MySQL是一种流行的数据库管理系统,用于Web和服务器应用程序。本教程将介绍如何在CentOS 6上安装,配置和管理MySQL。

    小皇帝James
  • 人人都是超级设计师@人工智能服装设计

    最近有了darksee.ai的帮助,行业的动态了如指掌,今天总结一下服装设计领域的人工智能新的动态。通过本文可以了解什么是超级设计师?如何成为超级设计师?

    mixlab
  • 《springboot实战》

    大致翻了一下《springboot实战》这一本书,相比之前的文章,总体来说,没有什么干货,实战感觉也谈不上。仅当一本普通的科普读物,记录一下学习笔记。看完可以了...

    kinnylee
  • 12 条用于 Linux的MySQL/MariaDB 安全最佳实践

    英文:tecmint,译文:oschina www.oschina.net/translate/mysql-mariadb-security-best-prac...

    企鹅号小编
  • js点击按钮返回页面顶部

    在进行官网一类的网站建设时,经常会出现页面太长的现象,当用户滚动滚动条到最底部时返回顶部需要滚动多下滚动条,用户体验相当不好,于是就出现了当滚动条滚动到一定位置...

    无邪Z
  • 确定当前事务的隔离级别

    事务是MySQL的Innodb存储引擎比较大的亮点,大家对事务的隔离级别肯定都不陌生,那么如何查看当前事务的隔离级别呢?这个方法可能大家也知道,不就是查看当前...

    AsiaYe

扫码关注云+社区

领取腾讯云代金券