千家信息网

vue如何实现验证码

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这篇文章主要讲解了"vue如何实现验证码",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"vue如何实现验证码"吧!vue实现验证码的方法:1、创建js组
千家信息网最后更新 2025年02月02日vue如何实现验证码

这篇文章主要讲解了"vue如何实现验证码",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"vue如何实现验证码"吧!

vue实现验证码的方法:1、创建js组件;2、引入组件;3、定义验证对象;4、初始化节点;5、通过validate()方法验证输入的是否正确即可。

本文操作环境:windows7系统、vue2.9.6版,DELL G3电脑。

vue怎么实现验证码

Vue实现验证码功能

具体内容如下

1.效果

2.代码

2.1 创建js组件

内容

(可直接粘贴过去,需要改宽度和高度,修改_init方法中的宽和高)

function GVerify (options) { // 创建一个图形验证码对象,接收options对象为参数 this.options = { // 默认options参数值  id: '', // 容器Id  canvasId: 'verifyCanvas', // canvas的ID  width: '80', // 默认canvas宽度  height: '30', // 默认canvas高度  type: 'number', // 图形验证码默认类型blend:数字字母混合类型、number:纯数字、letter:纯字母  code: '' }  if (Object.prototype.toString.call(options) === '[object Object]') { // 判断传入参数类型  for (var i in options) { // 根据传入的参数,修改默认参数值   this.options[i] = options[i]  } } else {  this.options.id = options }  this.options.numArr = '0,1,2,3,4,5,6,7,8,9'.split(',') this.options.letterArr = getAllLetter()  this._init() this.refresh()} GVerify.prototype = { /** 版本号**/ version: '1.0.0',  /** 初始化方法**/ _init: function () {  var con = document.getElementById(this.options.id)  var canvas = document.createElement('canvas')  // this.options.width = con.offsetWidth > 0 ? con.offsetWidth : '30'  // this.options.height = con.offsetHeight > 0 ? con.offsetHeight : '30'  this.options.width = '160'  this.options.height = '50'  canvas.id = this.options.canvasId  canvas.width = this.options.width  canvas.height = this.options.height  canvas.style.cursor = 'pointer'  canvas[xss_clean] = '您的浏览器版本不支持canvas'  con.appendChild(canvas)  var parent = this  canvas.onclick = function () {   parent.refresh()  } },  /** 生成验证码**/ refresh: function () {  var canvas = document.getElementById(this.options.canvasId)  if (canvas.getContext) {   var ctx = canvas.getContext('2d')  }  ctx.textBaseline = 'middle'   ctx.fillStyle = randomColor(180, 240)  ctx.fillRect(0, 0, this.options.width, this.options.height)   if (this.options.type === 'blend') { // 判断验证码类型   var txtArr = this.options.numArr.concat(this.options.letterArr)  } else if (this.options.type === 'number') {   var txtArr = this.options.numArr  } else {   var txtArr = this.options.letterArr  }   for (var i = 1; i <= 4; i++) {   var txt = txtArr[randomNum(0, txtArr.length)]   this.options.code += txt   ctx.font = randomNum(this.options.height / 2, this.options.height) + 'px SimHei' // 随机生成字体大小   ctx.fillStyle = randomColor(50, 160) // 随机生成字体颜色   ctx.shadowOffsetX = randomNum(-3, 3)   ctx.shadowOffsetY = randomNum(-3, 3)   ctx.shadowBlur = randomNum(-3, 3)   ctx.shadowColor = 'rgba(0, 0, 0, 0.3)'   var x = this.options.width / 5 * i   var y = this.options.height / 2   var deg = randomNum(-30, 30)   /** 设置旋转角度和坐标原点**/   ctx.translate(x, y)   ctx.rotate(deg * Math.PI / 180)   ctx.fillText(txt, 0, 0)   /** 恢复旋转角度和坐标原点**/   ctx.rotate(-deg * Math.PI / 180)   ctx.translate(-x, -y)  }  /** 绘制干扰线**/  for (var i = 0; i < 4; i++) {   ctx.strokeStyle = randomColor(40, 180)   ctx.beginPath()   ctx.moveTo(randomNum(0, this.options.width), randomNum(0, this.options.height))   ctx.lineTo(randomNum(0, this.options.width), randomNum(0, this.options.height))   ctx.stroke()  }  /** 绘制干扰点**/  for (var i = 0; i < this.options.width / 4; i++) {   ctx.fillStyle = randomColor(0, 255)   ctx.beginPath()   ctx.arc(randomNum(0, this.options.width), randomNum(0, this.options.height), 1, 0, 2 * Math.PI)   ctx.fill()  } },  /** 验证验证码**/ validate: function (code) {  var code = code.toLowerCase()  var v_code = this.options.code.toLowerCase()  if (code == v_code) {   return true  } else {   return false  } }}/** 生成字母数组**/function getAllLetter () { var letterStr = 'a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z' return letterStr.split(',')}/** 生成一个随机数**/function randomNum (min, max) { return Math.floor(Math.random() * (max - min) + min)}/** 生成一个随机色**/function randomColor (min, max) { var r = randomNum(min, max) var g = randomNum(min, max) var b = randomNum(min, max) return 'rgb(' + r + ',' + g + ',' + b + ')'} export { GVerify}

2.2 登录页面

2.2.1 引入组件

[....  

感谢各位的阅读,以上就是"vue如何实现验证码"的内容了,经过本文的学习后,相信大家对vue如何实现验证码这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

0