您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

如何使用node生成验证码

2024/3/13 14:23:17发布29次查看
这篇文章给大家分享的内容是关于如何使用node生成验证码,有一定的参考价值,有需要的朋友可以参考一下。
前言网络安全始终是一个重要话题,比如当你发现有人在恶意请求你的网站的邮箱注册接口,那么你可以考虑在服务端加上验证码,提高网站的安全性,本文就谈谈如何用node实现一个验证码。
前端部分前端显示如下:
注意一点,当用户点击图片的时候,需要刷新新的图片,因为浏览器会对同一个图片进行缓存,所以这里需要处理缓存的情况。我这里采用给图片地址加上当前时间戳来达到刷新的目的。代码如下:
html部分  <p id="app">    <input type="text" placeholder="请输入验证码" style="vertical-align: text-bottom;">    <img :src="authimgurl" style="border: solid 1px darkgray; vertical-align: text-bottom;" @click="changeauthimg"/>  </p>
js部分  <script src="https://cdn.bootcss.com/vue/2.5.16/vue.js"></script>  <script>    new vue({      el: '#app',      data: {        authimgurl: ''      },      created () {        this.authimgurl = 'http://localhost:3000/'      },      methods: {        changeauthimg () {          this.authimgurl = 'http://localhost:3000/' + '?' + new date().gettime()        }      }    })  </script>
后端部分首先,npm安装gd-bmp模块:npm i gd-bmp --save
这是一个高效并且100%js应用图形库,支持画点,线,曲线,矩形,圆形等等,地址如下:
https://github.com/zengming00...
后端代码如下:
var http = require('http')var bmp24 = require('gd-bmp').bmp24// 生成随机数function rand (min, max) {  return math.random() * (max - min + 1) + min | 0 // 特殊的技巧,|0可以强制转换为整数,向下舍入}// 制造验证码图片function makecapcha() {  let img = new bmp24(100, 40) // 长100, 高40  // 背景颜色  img.fillrect(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 = math.floor(h / h3 * math.sin(i / w2) + h / 2 + y1)    var x = math.floor(i + w)    for (let j = 0; j < bl; j++) {      img.drawpoint(x, y + j, color)    }  }  // 生成字符  let p = 'abcdefghkmnpqrstuvwxyz1234567890'  let str = ''  for (var i = 0; i < 4; i++) { // 生成4个字符    str += p.charat(math.random() * p.length | 0)  }  console.log(str)  var fonts = [bmp24.font12x24, bmp24.font16x32]  var x = 15  for (var i = 0; i < str.length; i++) {    let f = fonts[math.random() * fonts.length | 0]    y = 8 + rand(-10, 10)    img.drawchar(str[i], x, y, f, rand(0, 0xffffff))    x += f.w + rand(2, 8)  }  return img}// 创建http服务器http.createserver(function (req, res) {  if (req.url === '/favicon.ico') {    return res.end()  }  let img = makecapcha()  res.setheader('content-type', 'image/bmp')  res.end(img.getfiledata())}).listen(3000)console.log('localhost:3000')
函数makecapcha用于生成验证码,因为图片格式bmp的,所以设置响应头类型为image/bmp,最后,通过res.end(img.getfiledata())将生成的图片返回到客户端。
相关推荐:
关于typescript在node项目中的实践分析
以上就是如何使用node生成验证码的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product