node,express,captchapng实现图片验证码

前两天尝试着利用captchapng做了登录页验证码,分享记录一下,许多方面有误解希望大佬们帮我指出来!

安装captchapng

npm install captchapng

生成验证码

var express = require('express');
var captchapng = require('captchapng');

//验证码
exports.verify= function(req, res, next) {
    var code = parseInt(Math.random() * 9000 + 1000);//有且仅有4个数字
    var p = new captchapng(100, 30, code);//宽100 高30 四位数字
    p.color(0, 0, 0, 0);//底色
    p.color(80, 80, 80, 255);//字体颜色
    var img = p.getBase64();//转换成base64
    var imgbase64 = new Buffer(img, 'base64');// 存放在imgbase64
    res.writeHead(200, {
        'Content-Type': 'image/png'
    });
    res.end(imgbase64);
}

 

生成验证码后,我们需要实现验证码的获取

我写了一个接口,将我的验证码保存在session,便于之后的验证码相等判断

var express = require('express');
var router = express.Router();
var captchapng = require('captchapng');

/* GET users listing. */
router.get('/', function(req, res, next) {
    var code = parseInt(Math.random() * 9000 + 1000);
    req.session.captcha = code;//保存在session中,便于之后的验证码判断
    var p = new captchapng(100, 30, code);
    p.color(0, 0, 0, 0);
    p.color(80, 80, 80, 255);
    var img = p.getBase64();
    var imgbase64 = new Buffer(img,'base64');
    res.writeHead(200, {
        'Content-Type': 'image/png'
    });
    res.end(imgbase64);
});

module.exports = router;

在客户端进行验证码获取,并插入到页面中

<img :src="`data:image/png;base64,${codeImage}`" @click="getData"/>


//获取
getCode().then((res) => {
  this.codeImage = res.data
})


最后就是我们的验证码判断,在我们将用户填写的验证码信息用post发送

router.post('/login', function(req, res, next) {
  let code = req.body.code
  // 验证码是否填写判断
  if (!code){
    return res.json({code: 500, data: false, msg: '请填写验证码!'})
  }
  //验证码正确判断
  else if (code !== req.session.captcha.toString()){
    return res.json({code: 500, data: false, msg:'验证码错误!'}
  }else {
    return res.json({code: 200, data: false, msg:'验证码正确!'}
  }
})

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值