纯前端实现 传统验证码功能

效果图:(如图所示)

在这里插入图片描述

项目背景:

  • 之前就没有规划说有验证码的需求,产品又要硬加
  • 后端也没得时间写接口,就叫我自己搞,不要烦他,他算数据心情不好
  • 😒 哎,前端,dddd

开始调研:

无奈,开始百度cv大法,找了一圈,什么verify啊,jQuery的啊,原生的啊五花八门
看不懂,然后用在自己的项目又不友好,老是一堆error,而且引入的文件太多了,一点都不划算,怪自己太菜了,也不想再麻烦了
于是,只能自己写了,当然也是借鉴了一下别人的代码,然后变成了自己的

【首先,当然了,要搞清楚为啥这样做】

前端验证和后端验证区别:

前端

说法一:
验证码是防机器的,防止恶意破解密码、刷票、论坛灌水、刷页。有效的防止某个黑客以特定程序暴力破解的方式进行不断的登录尝试。
一种常用的CAPTCHA测试是让用户输入一个扭曲变形的图片上所显示的文字或数字,扭曲变形是为了避免被光学字符识别(OCR, Optical Character Recognition)之类的电脑程序自动辨识出图片上的文数字而失去效果。由于这个测试是由计算机来考人类,而不是标准图灵测试中那样由人类来考计算机,人们有时称CAPTCHA是一种反向图灵测试,

说法二:
首先,验证码的基本功能是进行人机识别,拦截机器行为。可以稍微细想一下,如果你们使用的方式,自己都很容易就能抓取并识别,那就应该避免使用这种方式了。而且,现在图像识别技术也已经很先进了,再加上打码平台的存在,单纯依靠验证码并不安全。如果对安全性有要求,同时也考虑用户体验的话,建议使用行为验证,我们平时看到比较多的是滑动验证。行为验证是利用生物行为特征模型进行人机识别,用在注册登录、防刷红包优惠券、防薅羊毛、数据反爬等各种调用接口的场景。顶象的行为验证技术已经结合了设备指纹信息、IP/手机号风险、访问频率、地理位置等等的多维度信息,判断更加精准。

后端

后端验证码是由后端生成的验证码。
当用户打开登录页面后,浏览器会向服务器发送请求并携带生成的令牌tolken,服务器随机生成验证码,并将验证码和tolken的对应关系存储在redis缓冲中,之后会在前端动态的生成一张验证码图片。
当用户输入验证码并点击登录的时候,服务器会在redsi缓存中找到该浏览器的tolken对应的验证码,验证验证码是否正确,如果正确,接下来开始比较用户名和密码。

功能原理分析:

  1. 如何实现验证码的随机性?
  2. 如何实现一块区域来展示验证码?
  3. 输入框的值和验证码值之间如何建立联系?
  4. 如何美化验证码UI,至少看起来得像吧

OK,带着这几个疑问,能搞清楚,基本就可以实现了
1----需要大量使用Math 方法
2----受到 echarts 和 百度地图这些 canvas库的启发,决定用canvas来实现,这样好理解,而且数据也好对应(关键是我只会canvas😩)
3----如果是Vue的话,就很简单,下面会详细说明, 如果是原生或者jQuery的话,可能在存验证码那里不像Vue那样优雅,仅此而已
4----我看了下别人写的验证码,至少得有 “倾斜”,“多余的线和点” 这几样,反正就是让你要仔细看才能看清楚的那种感觉,哈哈

实现代码:

HTML

<div>
   <span class="login">验证:</span>
   <input
     style="width: 100px"
     type="text"
     placeholder="请输入验证码"
     class="input-val"
     v-model.trim="yanzhen"
     @keyup.enter="login_enter"
   />
   <canvas id="canvas" width="130px" height="33px" @click
  • 31
    点赞
  • 129
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
verify.js是一个前端验证码生成和验证工具。它通过使用JavaScript编写,可以帮助开发者在前端页面中添加验证码功能,以增强网站的安全性。 verify.js的生成验证码的方式多种多样,可以是数字、字母、图像等形式。开发者可以根据自己的需求选择不同的验证码类型,并可以自定义验证码的长度、字体、颜色等样式。生成的验证码可以直接在前端页面中展示给用户,通过verify.js提供的接口,可以轻松地将验证码嵌入到表单、登录页面等需要进行验证的地方。 validate.js也提供了验证验证码功能,它通过接收用户输入的验证码信息,并与前端生成的验证码进行比对,以确定用户输入的验证码是否正确。验证过程是在前端进行的,可以有效地减轻服务器的负担,提高页面的响应速度。如果用户输入的验证码前端生成的验证码不一致,开发者可以自定义提示信息,提示用户重新输入。只有在用户输入正确的验证码后,才能通过验证码验证,进一步进行后续操作,确保了网站的安全性。 总的来说,verify.js是一个方便易用的前端验证码工具,它提供了生成验证码和验证验证码功能。通过它,开发者可以简单地在前端页面中添加验证码,并提高网站的安全性。它的使用方法灵活多样,可以满足不同网站的需求。同时,verify.js还支持自定义样式和提示信息,使开发者可以根据自己的需要进行定制。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值