Nodejs中使用captchapng模塊生成圖片驗(yàn)證碼
Nodejs項(xiàng)目,在做圖片驗(yàn)證碼的時(shí)候遇到了難題。Nodejs沒有圖片庫,以后會(huì)有,但是現(xiàn)在沒有。
網(wǎng)絡(luò)上搜索一圈,有幾個(gè)解決方案:
1、采用第三方驗(yàn)證碼程序,有的時(shí)候,項(xiàng)目可能不允許;
2、使用Java或者PHP生成圖片,Nodejs調(diào)用,中間采用Redies共享;
這兩種方式都不太理想,好在終于找到了可以支持Nodejs圖片驗(yàn)證碼的一個(gè)庫,雖然只支持?jǐn)?shù)字,但是也還不錯(cuò)。原理是使用Base64的圖片編碼方式。
這個(gè)庫的Gighub地址是:https://github.com/GeorgeChan/captchapng
使用方法這個(gè)主頁上都有,這里還是補(bǔ)充一下:
1、在Node項(xiàng)目的package.json中增加captchapng模塊;
2、使用如下代碼:
/**
* 圖片驗(yàn)證碼
* @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、給這個(gè)controller寫一個(gè)路徑,頁面就可以直接在img標(biāo)簽里面增加src屬性了。
這樣就搞定了Nodejs的圖片驗(yàn)證碼,希望Nodejs盡快補(bǔ)充缺乏的庫。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
node.js利用socket.io實(shí)現(xiàn)多人在線匹配聯(lián)機(jī)五子棋
這篇文章主要介紹了node.js利用socket.io實(shí)現(xiàn)多人在線匹配聯(lián)機(jī)五子棋的操作方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-05-05
nodejs文件操作模塊FS(File System)常用函數(shù)簡明總結(jié)
這篇文章主要介紹了nodejs文件操作模塊FS(File System)常用函數(shù)簡明總結(jié),對(duì)FS模塊的大部份異步函數(shù)做了介紹,而且用中文注釋,這下用起來方便了,需要的朋友可以參考下2014-06-06
基于Express實(shí)現(xiàn)遞歸遍歷文件和CRUD操作
在現(xiàn)代的?Web?應(yīng)用開發(fā)中,文件管理是一個(gè)常見而重要的需求,所以本文就來講講如何利用?Express?框架,在遞歸遍歷文件之后實(shí)現(xiàn)強(qiáng)大的?CRUD?操作,構(gòu)建一個(gè)功能完善的文件管理系統(tǒng),感興趣的可以了解一下2023-06-06
Node.js實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳示例詳解
這篇文章主要為大家介紹了Node.js實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
在Node.js應(yīng)用程序中處理大數(shù)的操作指南
在JavaScript生態(tài)系統(tǒng)中,你可以使用BigInt來處理大整數(shù),但是,你也可以使用具有類似于BigInt功能的第三方庫,本文將是使用BigInt和提供類似功能的流行庫管理大數(shù)的完整指南,我們還將比較第三方庫的用例、優(yōu)勢和劣勢2023-06-06
干凈卸載Windows的Node.js環(huán)境的方法
這篇文章主要介紹了如何干凈卸載Windows的Node.js環(huán)境的方法,文中通過圖文結(jié)合的方式講解的非常詳細(xì),對(duì)大家刪除Node.js環(huán)境有一定的幫助,需要的朋友可以參考下2025-01-01
node使用querystring內(nèi)置模塊解決分頁返回?cái)?shù)據(jù)太多導(dǎo)致json.parse()解析報(bào)錯(cuò)問題
這篇文章主要介紹了node使用querystring內(nèi)置模塊解決分頁返回?cái)?shù)據(jù)太多導(dǎo)致json.parse()解析報(bào)錯(cuò)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-09-09

