文档章节

【Nodejs项目手记】Nodejs中使用图片验证码,captchapng模块可以解决Nodejs图

bling-兴哥
 bling-兴哥
发布于 2016/06/26 18:35
字数 415
阅读 230
收藏 0

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

 

Nodejs项目,在做图片验证码的时候遇到了难题。Nodejs没有图片库,以后会有,但是现在没有。

 

网络上搜索一圈,有几个解决方案:

 

1、采用第三方验证码程序,有的时候,项目可能不允许;

2、使用Java或者PHP生成图片,Nodejs调用,中间采用Redies共享;

 

这两种方式都不太理想,好在终于找到了可以支持Nodejs图片验证码的一个库,虽然只支持数字,但是也还不错。原理是使用Base64的图片编码方式。

 

这个库的Gighub地址是:https://github.com/GeorgeChan/captchapng

 

使用方法这个主页上都有,这里还是补充一下:

 

1、在Node项目的package.json中增加captchapng模块;

2、使用如下代码:

/**

 * 图片验证码

 * @param req

 * @param res

 * @param next

 */

function randomcodePngController(req , res , next){

    var code = '0123456789';

    var length = 4;

    var randomcode = '';

    for (var i = 0; i < length; i++) {

        randomcode += code[parseInt(Math.random() * 1000) % code.length];

    }

    // 保存到session

    if (null == req.session[sessionConstant.login]) {

        req.session[sessionConstant.login] = {};

    }

    req.session[sessionConstant.login][sessionConstant.randomcode] = randomcode;

   // 输出图片

     var p = new captchapng(80,30,parseInt(randomcode)); // width,height,numeric captcha

    p.color(255, 255, 255, 0);  // First color: background (red, green, blue, alpha)

    p.color(80, 80, 80, 255); // Second color: paint (red, green, blue, alpha)

    var img = p.getBase64();

    var imgbase64 = new Buffer(img,'base64');

    res.writeHead(200, {

        'Content-Type': 'image/png'

    });

    res.end(imgbase64);

}

 

3、给这个controller写一个路径,页面就可以直接在img标签里面增加src属性了。

 

这样就搞定了Nodejs的图片验证码,希望Nodejs尽快补充缺乏的库。

 

© 著作权归作者所有

bling-兴哥
粉丝 0
博文 13
码字总数 10623
作品 0
东丽
私信 提问
加载中

评论(0)

前端开发 Vue -1windows环境搭建Vue Node开发环境

解决几个疑问: 想学习下vue.js,我理解的它是一个前端的框架,主要作用是对数据的处理,和juqery类似,所以不太理解为什么要在nodejs中npm install vue呢?在html文件中引入vue.js不是就可以...

osc_j89isia8
2019/10/23
3
0
Node.js 宣布一个新的 --experimental-modules【译】

原文:Announcing a new --experimental-modules 译文地址 在2017年,Node.js 8.9.0发布了对ECMAScript模块的实验性支持。这种ECMAScript模块的支持是需要在后面加上标识来运行。 现在,主流浏...

flytam
2019/05/06
0
0
Node.js Web 快速开发框架 - Doodoo.js

简介 Doodoo.js -- 中文最佳实践Node.js Web快速开发框架。支持Koa.js中间件,支持模块化,插件,钩子机制,可以直接在项目里使用 ES6/7(Generator Function, Class, Async & Await)等特性...

einsqing
2018/08/21
846
0
[译] 在 Nodejs 中运行多线程

原文:Going Multithread with Node.js Node.js 因为其设计而饱受批评。 与 Java, C 或 Python 等编程语言相比,Node.js 不能直接访问线程显得有些奇怪。我们怎么能并发地执行任务呢? 好吧,...

时间被海绵吃了
2019/07/27
0
0
初识node.js(通过npm下载项目依赖的包的过程)

一、什么是Node.js                   简单的说 Node.js 就是运行在服务端的 JavaScript。 Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。 Node.js是一个事...

osc_va9x13k2
2018/10/12
4
0

没有更多内容

加载失败,请刷新页面

加载更多

springBoot之配置文件的读取以及过滤器和拦截器的使用

springBoot之配置文件的读取以及过滤器和拦截器的使用 前言 在之前的学习springBoot中,成功的实现了Restful风格的基本服务。但是想将之前的工程作为一个项目来说,那些是仅仅不够的。可能还...

鹏十二
18分钟前
17
0
Springboot在Idea Intellij汉字Unicode读取乱码问题

问题核心:Unicode编码中的字母需要小写。比如\u8bbe\u5907\u53f7 首先,了解清楚Unicode编码是什么东西。请读者自己搜索。 然后,我们要清楚springboot是怎么加载配置文件的。兴趣的读者可以...

sunranhou
22分钟前
13
0
服务器管理规范

1、为了保证服务器的安全,服务器的账号密码不能随便透露给他人,必须指定人员负责管理。 2、服务器至少要安装360安全卫士。以此保障服务器的安全。 3、服务器要设置定期重启(可以使用命令 ...

ethanleellj
25分钟前
31
0
工厂方法

1. 介绍 工厂方法模式(FACTORY METHOD)是一种常用的类创建型设计模式,此模式的核心精神是封装类中变化的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用和方便后期...

steven-黄笑笑
27分钟前
19
0
Ubuntu 18.04 安装GRASS GIS 7.8.3

在之前的Ubuntu 16.04 安装 Grass gis 7.6.1中主要是通过添加ppa源的方法安装预编译包,但由于众所周知的原因可能会失败,所以最好的安装方法是下载源码后自己编译安装,下面是安装步骤: 安...

ddd口木呆
27分钟前
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部