在Express框架中用Node.js开发图形验证码

本篇讲述使用Node.js开发图形验证码

一般项目中的登录注册功能,甚至一些敏感操作都需要获取短信验证码。而短信服务一般都是第三方的,需要收费。找了几家,聚合数据的初次注册免费送5条短信。不想影响项目功能的后续使用,这里就用自己使用node.js生成的图形验证码进行替代。

网上很多的解决办法是使用谷歌的recaptcha,但使用这个插件需要安装了C++模块才行,我的电脑没有安装,因此选择了svg-captcha,svg-captcha可以生产图形验证码可以生产算数式

  1. 安装svg-captcha
      npm i svg-captcha -S
    
  2. 使用svg-captcha
    在express框架的 routes文件中新建一个captcha.js文件
    var express = require('express');
    var router = express.Router();
    const svgCaptcha  = require('svg-captcha'); // 引入svg-captcha模块
    
    /* GET users listing. */
    router.get('/', function (req, res, next) {
    	// 使用svg-captcha
    	const cap = svgCaptcha.create(); // 此时创建的图形验证码默认为四个字符和一根干扰线条,背景色默认无
    	console.log(cap); // {text: 'adfd', data: '.......'}
    	res.type('svg')
    	res.status(200).send(cap.data);
    });
    
    module.exports = router;
    
    在express框架的views文件家中新建一个captcha.ejs文件
    
    
    
    
    	<%= title %>
    	
    
    
    
    	
    
    
    
    
    在express框架的app.js中抛出/captcha
    var captchaRouter = require('./routes/captcha');
    app.use('/captcha', captchaRouter);
    
  3. 呈现的效果:
    在Express框架中用Node.js开发图形验证码_第1张图片
    在Express框架中用Node.js开发图形验证码_第2张图片
  4. svg-captcha的API:
    **svgCaptcha.create(options):**如果options如上面代码示例未传入参数,则生成的svg图片是4个字符。
    • size: 5 // 验证码的字符数
    • ignoreChars: ‘wan’ // 验证码字符中排除wan
    • noise: 4 // 干扰线的数量
    • color: true // 验证码字符是否有颜色,默认没有,设定了背景色则有
    • background: ‘#ccc’ // 验证码图片背景颜色
      该函数返回的对象中有两个属性
    • data: string // svg路径
    • text: string // 验证码文字
      使用以上参数显示效果如下:
      在Express框架中用Node.js开发图形验证码_第3张图片
      **svgCaptcha.createMathExpr(options):**和上面的 api 参数和返回值都一样。区别在于这个 api 生成的 svg 是一个算数式,而 text 返回的是算数式的结果。用法和create是完全一样的。
      **svgCaptcha.loadFont(url):**加载字体,覆盖内置的字体
      **svgCaptcha.options:**这是全局配置对象。create和createMathExpr接口的默认配置就是使用的这个对象。除了size,ignoreChars,noise,color,background这些属性之外,还可以在这里修改width,height,fontSize,charPreset.

你可能感兴趣的:(express框架,react,前端爬坑之路)