当前位置:首页 > 知识普及 > 正文内容

web前端制作图形验证码

admin1周前 (05-29)知识普及20

web前端制作图形验证码

我们需在登录表单中增设一个用于输入验证码的表单项,并为图形验证码设置一个canvas画布。由于有时生成的验证码难以辨认,故需为验证码添加点击功能,以便实现验证码的更换。

web前端制作图形验证码 第1张

                                                                                                                                                                                                   
                   
   
               

需要用到的属性

表单中需额外加入valiCode字段来记录用户的验证码输入。在此情况下,我们设定用户每次登录失败后,都必须额外输入图形验证码。为此,我们引入了count属性,每当登录失败发生时,count值将增加。然而,这种处理方法并不十分严密web前端制作图形验证码,而且用户在刷新页面后,count值会重置为零。对此处登录实施额外限制,例如异地访问控制等,鉴于本案例并未深入涉及后端编程,故仅以计数器值作为判断标准。

data() {
    return {
      form: {
        userName: "",// 用户名
        password: "",// 密码
        valiCode: ""// 验证码
      },
      count: 0, // 登录次数
      show_num: [],// 图形上的文字
    }
}

生产图形验证码

页面上所绑定的方法名为getImgYanzheng前端图片验证码怎么做,该方法负责绘制图形验证码。

在创建图形验证码的过程中,必须为验证码设定一个字符库,这里采用的字符库包括:A、B、C、E、F、G、H、J、K、M、N、P、Q、R、S、T、W、X、Y、Z、1、2、3、4、5、6、7、8、9、0、好、医、生。对字母进行了筛选,去除了易混淆的部分,同时允许添加文字。因此,图形验证码可以设计成由四个随机文字组成的点击式前端图片验证码怎么做,或是需要填空的成语等形式。此外,在处理用户输入时,不区分大小写,这就要求使用toLowerCase方法。

接下来就是canvas绘图的一些技巧了。

canvas绘图

canvas组件自身不具备绘制功能。所有的绘图操作都需要在JavaScript内部进行。

获取文档中ID为"myCanvas"的元素,并将其赋值给变量c。
var cxt=c.getContext("2d");

在JavaScript编程语言中,我们通过id属性定位canvas元素,进而构建context对象。这里的getContext("2d")对象是HTML5内置的,它提供了丰富的绘图功能,包括绘制路径、矩形、圆形、文本以及插入图像等。将canvas视作一幅风景,那么context对象便是呈现这幅风景的画布。

在绘制验证码时,由于绘制顺序是从左至右进行的,这就要求我们事先合理规划画布的可用区域。同时,在绘制过程中,还需融入一些随机元素,以增强验证码的识别难度前端图片验证码怎么做,防止其被程序轻易识别。

getImgYanzheng() {
      var show_num = [];
canvas的宽度被设定为150像素,这一值等同于通过获取ID为"canvas"的元素的样式宽度。
canvas的高度被设置为30像素,这一值等同于通过获取ID为"canvas"的元素的样式高度。
通过document.getElementById方法,我成功获取了名为"canvas"的元素,它将作为绘画的画布,用于呈现景色。
canvas画布的绘图环境已被成功获取,即创建了用于景色展示的绘图上下文。
canvas的宽度被设置为canvas_width的值。
canvas的高度被设置为canvas_height的值。
      var sCode =
A、B、C、E、F、G、H、J、K、M、N、P、Q、R、S、T、W、X、Y、Z、数字1至9、0,以及“好”和“医生”等字符。
定义变量aCode,通过将字符串sCode以逗号为分隔符进行分割操作。
aCode的长度信息已成功获取,并存储在变量aLength中。
      for (var i = 0; i <= 3; i++) {
        var j = Math.floor(Math.random() * aLength); //获取到随机的索引值
        var deg = (Math.random() * 30 * Math.PI) / 180; //产生0~30之间的随机弧度
        var txt = aCode[j]; //得到随机的一个内容
        show_num[i] = txt.toLowerCase();
        var x = 10 + i * 20; //文字在canvas上的x坐标
        var y = 20 + Math.random() * 8; //文字在canvas上的y坐标
        context.font = "bold 23px 微软雅黑";
        context.translate(x, y);
        context.rotate(deg);
        context.fillStyle = this.randomColor();
        context.fillText(txt, 0, 0);
        context.rotate(-deg);
        context.translate(-x, -y);
      }
      for (var i = 0; i <= 5; i++) {
        //验证码上显示线条
        context.strokeStyle = this.randomColor();
        context.beginPath();
        context.moveTo(
          Math.random() * canvas_width,
          Math.random() * canvas_height
        );
        context.lineTo(
          Math.random() * canvas_width,
          Math.random() * canvas_height
        );
        context.stroke();
      }
      for (var i = 0; i <= 30; i++) {
        //验证码上显示小点
        context.strokeStyle = this.randomColor();
        context.beginPath();
        var x = Math.random() * canvas_width;
        var y = Math.random() * canvas_height;
        context.moveTo(x, y);
        context.lineTo(x + 1, y + 1);
        context.stroke();
      }
      this.show_num = show_num;
    },

验证码及线条需要一些随机的颜色:

randomColor() {
      //得到随机的颜色值
r等于256乘以随机数再向下取整的结果。
定义变量g,其值为通过Math.random()函数生成的介于0和1之间的随机数与256相乘后,使用Math.floor()函数向下取整得到的结果。
定义变量b,其值为通过Math.random()函数生成的介于0到1之间的随机数乘以256,然后使用Math.floor()函数将结果向下取整至最接近的整数。
返回字符串"rgb(" + r + "," + g + "," + b + ")"。
    }

采用上述两种手段,图形验证码的生成过程便已完成,随后便进入了如何应用这一验证码的阶段。

使用图形验证码

对登录次数count进行评估,若该次数超出零,便需提供验证码。

const self = this;
if (this.count) {
若此表单验证码有效,{
若(当前显示的数字序列转换为字符串后与表单中的验证码值进行大小写不敏感的比较)不匹配,{
标题:确认码输入有误
                });
                return;
            }
        } else {
以便用户及时了解相关情况。
输入验证码提示:请输入验证码
            });
            return;
        }
    }

当登录失败时需要执行count++并且刷新验证码:

self.count++;
self.getImgYanzheng();
self.$Notice.warning({
title: "登陆失败",
desc: rs.data.msg
});

此时就完成了一个图形验证码的添加工作web前端制作图形验证码,同学们快装起来吧。

加入微信交流群:************ ,请猛戳这里→点击入群

扫描二维码推送至手机访问。

版权声明:本文由智汇百科网发布,如需转载请注明出处。

本文链接:https://zhihuibkw.com/post/3862.html

分享给朋友:

“web前端制作图形验证码” 的相关文章

原来一直理解错了![常见知识误区] 深度剖析

原来一直理解错了![常见知识误区] 深度剖析

在我们的学习和生活中,常常会遇到一些看似简单却容易被误解的知识。这些常见的知识误区,就像隐藏在我们思维深处的暗礁,一不小心就会让我们陷入错误的认知之中。今天,我们就来深度剖析一些常见的知识误区,让我们对这些问题有更清晰、更准确的理解。让我们来谈谈数学领域中的一个常见误区。很多人认为数学就是枯燥的数字...

生活常见误区大揭秘:这些知识你真的懂吗?

生活常见误区大揭秘:这些知识你真的懂吗?

在我们的日常生活中,充斥着各种各样的知识和观念,有些看似理所当然,实则存在着诸多误区。这些误区往往影响着我们的决策、行为和生活质量,让我们误以为自己懂得了很多,实则陷入了认知的陷阱。今天,就让我们一起来揭开这些生活常见误区的神秘面纱,看看你是否真的懂了。误区一:多吃补品就能强身健体在市场上,各种各样...

必知的急救知识:关键时刻能救命

必知的急救知识:关键时刻能救命

在生活中,我们难免会遇到各种突发状况,有时候,一些简单的急救知识可能就能在关键时刻挽救生命。因此,了解和掌握一些必知的急救知识是非常重要的。心肺复苏术(CPR)是急救中最为关键的技能之一。当遇到心脏骤停的患者时,及时进行心肺复苏可以为患者争取宝贵的时间,增加其生存的机会。心肺复苏的操作步骤包括胸外按...

汽车保养知识大汇总:让爱车陪你更久

汽车保养知识大汇总:让爱车陪你更久

汽车,作为我们日常生活中不可或缺的交通工具,承载着我们的出行和生活。要让爱车始终保持良好的状态,陪伴我们更久,就需要我们了解并掌握汽车保养的知识。从日常的清洁开始。定期清洁车身是保持汽车外观美观的关键。使用温和的清洁剂和柔软的抹布,轻轻擦拭车身表面的灰尘、污垢和污渍。特别是在雨后或泥泞道路行驶后,要...

家电使用小常识:延长使用寿命的技巧

家电使用小常识:延长使用寿命的技巧

在日常生活中,家电已经成为我们不可或缺的一部分。它们为我们的生活带来了诸多便利,但如果不注意使用和保养,家电的使用寿命可能会大大缩短,不仅会增加我们的使用成本,还会给我们的生活带来不必要的麻烦。因此,了解一些家电使用小常识,掌握延长使用寿命的技巧是非常必要的。我们来谈谈电视机的使用和保养。电视机是家...

昆虫知识认识身边的小昆虫

昆虫知识认识身边的小昆虫

在我们的日常生活中,身边常常有一些小小的生物在默默活动,它们就是昆虫。昆虫是地球上最繁盛的动物类群,种类繁多,形态各异,几乎无处不在。通过了解昆虫知识,我们能更好地认识这些微小而神奇的生命,也能更加珍惜和保护我们的自然环境。让我们来认识一些常见的昆虫。蜜蜂是大家非常熟悉的昆虫,它们忙碌地在花丛中飞来...