前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nodejs实现图形验证码

nodejs实现图形验证码

作者头像
OECOM
发布2020-07-02 11:48:33
2.9K0
发布2020-07-02 11:48:33
举报
文章被收录于专栏:OECOMOECOM

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

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

代码语言:javascript
复制
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);
})

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

代码语言:javascript
复制
svgCaptcha.createMathExpr(options);//options参数不变

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

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

代码语言:javascript
复制
svgCaptcha.loadFont(url)

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

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

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

代码语言:javascript
复制
<img src="http:127.0.0.1:3001/getCode?_v=1231" onclick="refish()"/>

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-01-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档