{image}

如何使用node生成验证码

这篇文章给大家分享的内容是关于如何使用node生成验证码 ,有一定的参考价值,有需要的朋友可以参考一下。
前言网络安全始终是一个重要话题,比如当你发现有人在恶意请求你的网站的邮箱培嫌搏注册接口 ,那么你可以考虑在服务端加上验证码 ,提高网站的安全性,本文就谈谈如何用node实现一个验证码 。
前端部分前端显示如下:

注意一点,当用户点击图片的时候 ,需要刷新新的图片,因为浏览器会对同一个图片进行缓存,所以这里需要处理缓存的情况。我这里采用给图片地址加上当前时间戳者谨来达到刷新的目的。代码如下:
html部分




js部分

后端部分首先 ,npm安装gd-bmp模块:npm i gd-bmp --save
这是一个高效并且100%js应用图形库,支持画点,线 ,曲线配祥,矩形,圆形等等 ,地址如下:
/zengming00...
后端代码如下:
var http = require('http')
var BMP24 = require('gd-bmp').BMP24
// 生成随机数
function rand (min, max) {
return () * (max - min + 1) + min | 0 // 特殊的技巧,|0可以强制转换为整数,向下舍入
}
// 制造验证码图片
function makeCapcha() {
let img = new BMP24(100, 40) // 长100 , 高40
// 背景颜色
(0, 0, 100, 40, 0xffffff) // 白色
// 画曲线
var w = img.w / 2
var h = img.h
var color = rand(0, 0xffffff)
var y1 = rand(-5, 5) // Y轴位置调整
var w2 = rand(10, 15) // 数值越小频率越高
var h3 = rand(3, 5) //数值越小幅度越大
var bl = rand(1, 5)
for (let i = -w; i < w; i += 0.1) {
var y = (h / h3 * (i / w2) + h / 2 + y1)
var x = (i + w)
for (let j = 0; j < bl; j++) {
(x, y + j, color)
}
}
// 生成字符
let p = ''
let str = ''
for (var i = 0; i < 4; i++) { // 生成4个字符
str += (() * | 0)
}
(str)
var fonts = [12x24, 16x32]
var x = 15
for (var i = 0; i < ; i++) {
let f = fonts[() * | 0]
y = 8 + rand(-10, 10)
(str[i], x, y, f, rand(0, 0xffffff))
x += f.w + rand(2, 8)
}
return img
}
// 创建http服务器
ver(function (req, res) {
if ( === '/') {
return ()
}
let img = makeCapcha()
('Content-Type', 'image/bmp')
(ta())
}).listen(3000)
('localhost:3000')函数makeCapcha用于生成验证码 ,因为图片格式bmp的,所以设置响应头类型为image/bmp,最后 ,通过(ta())将生成的图片返回到客户端 。
相关推荐:
关于TypeScript在node项目中的实践分析

本文版权归去快排wWw.seogUrublog.com 所有,如有转发请注明来出,竞价开户托管,seo优化请联系qq❉61910465