vue 项目登录页面添加验证码

阅读: 评论:0

vue 项目登录页面添加验证码

vue 项目登录页面添加验证码

identify
这是一个vue的插件,使用canvas来生成图形验证码。

具体参数如下:


直接上测试代码:
identify.vue组件(主要用于定义参数和方法)

<template><div class="s-canvas"><canvas id="s-canvas" :width="contentWidth" :height="contentHeight"></canvas></div>
</template>
<script>export default{name: 'SIdentify',props: {identifyCode: {type: String,default: '1234'},fontSizeMin: {type: Number,default: 16},fontSizeMax: {type: Number,default: 40},backgroundColorMin: {type: Number,default: 180},backgroundColorMax: {type: Number,default: 240},colorMin: {type: Number,default: 50},colorMax: {type: Number,default: 160},lineColorMin: {type: Number,default: 40},lineColorMax: {type: Number,default: 180},dotColorMin: {type: Number,default: 0},dotColorMax: {type: Number,default: 255},contentWidth: {type: Number,default: 112},contentHeight: {type: Number,default: 38}},methods: {// 生成一个随机数randomNum (min, max) {return Math.floor(Math.random() * (max - min) + min)},// 生成一个随机的颜色randomColor (min, max) {let r = this.randomNum(min, max)let g = this.randomNum(min, max)let b = this.randomNum(min, max)return 'rgb(' + r + ',' + g + ',' + b + ')'},drawPic () {let canvas = ElementById('s-canvas')let ctx = Context('2d')Baseline = 'bottom'// 绘制背景ctx.fillStyle = this.randomColor(this.backgroundColorMin, this.backgroundColorMax)ctx.fillRect(0, 0, tWidth, tHeight)// 绘制文字for (let i = 0; i < this.identifyCode.length; i++) {this.drawText(ctx, this.identifyCode[i], i)}this.drawLine(ctx)this.drawDot(ctx)},drawText (ctx, txt, i) {ctx.fillStyle = this.lorMin, lorMax)ctx.font = this.randomNum(this.fontSizeMin, this.fontSizeMax) + 'px SimHei'let x = (i + 1) * (tWidth / (this.identifyCode.length + 1))let y = this.randomNum(this.fontSizeMax, tHeight - 5)var deg = this.randomNum(-45, 45)// 修改坐标原点和旋转角度anslate(x, ate(deg * Math.PI / 180)ctx.fillText(txt, 0, 0)// 恢复坐标原点和旋转角度ate(-deg * Math.PI / anslate(-x, -y)},drawLine (ctx) {// 绘制干扰线for (let i = 0; i < 8; i++) {ctx.strokeStyle = this.randomColor(this.lineColorMin, this.lineColorMax)ctx.beginPath()veTo(this.randomNum(0, tWidth), this.randomNum(0, tHeight))ctx.lineTo(this.randomNum(0, tWidth), this.randomNum(0, tHeight))ctx.stroke()}},drawDot (ctx) {// 绘制干扰点for (let i = 0; i < 100; i++) {ctx.fillStyle = this.randomColor(0, 255)ctx.beginPath()ctx.arc(this.randomNum(0, tWidth), this.randomNum(0, tHeight), 1, 0, 2 * Math.PI)ctx.fill()}}},watch: {identifyCode () {this.drawPic()}},mounted () {this.drawPic()}}
</script>


在 main.js进行引入(注意路径的地址):

import SIdentify from './components/page/identify'
Vue.use(SIdentify)



codetest.vue(在页面进行使用):

<template><div class="code" @click="refreshCode"><s-identify :identifyCode="identifyCode"></s-identify></div>
</template><script>
export default {name: "codetest",data() {return {identifyCodes: "1234567890",identifyCode: ""};},mounted() {this.identifyCode = "";this.makeCode(this.identifyCodes, 4);},methods: {randomNum(min, max) {return Math.floor(Math.random() * (max - min) + min);},refreshCode() {this.identifyCode = "";this.makeCode(this.identifyCodes, 4);},makeCode(o, l) {for (let i = 0; i < l; i++) {this.identifyCode += this.identifyCodes[this.randomNum(0, this.identifyCodes.length)];}console.log(this.identifyCode);}}
};
</script><style>
.code {margin: 400px auto;width: 114px;height: 40px;border: 1px solid red;
}
</style>


注意图片验证码的宽高是由参数 contentWidth 和 contentHeight 决定的,所以更改宽高的时候,直接在声明的参数中进行更改就可。

测试效果:

 

本文发布于:2024-02-01 14:45:16,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170676991637348.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:验证码   页面   项目   vue
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23