Vue实战089最简单的登录验证码功能实现
在登录界面中我们经常会遇到需要校验验证码才能登录,验证码是由一串随机产生的字母、数字或符号组成。目的是为了防止用户利用机器人自动注册、恶意登录、刷票灌水等操作,验证码技术可以适当的提高服务的安全性,提升用户体验。常见的验证码有随机字符、汉字图片、字符图片、算术、问答、滑块、坐标、旋转、滑动拼图、文字点选、图标点选、推理拼图、语序点选、空间推理、短信、语音、智能无感知等验证方式,最简单的应该是随机字符验证了(安全级别最低!)。
HTML模板构建
在template模板中绑定一个动态的style样式,利用check来改变图标的颜色提示用户验证码输入正确,如果验证码错误则利用message弹出警示框提示。点击验证码位置触发refreshCode重新调用createCode来刷新验证码,handleLogin为键盘事件触发登录。
最简单的验证码
利用Math.random()随机生成一个0-1之间的随机double值,根据random随机数组中的数据随机出索引值,再通过索引值获取到对应的随机值。随机的长度通过len来限制,将每次随机出的数据追加到code中即可得到随机的验证码。
验证码效验
这里不能通过el-form中的rules来校验验证码的正确与否,因为在data中定义checkCode 无法获取到this.createdCode值(undefined)。这里我们利用el-input的blur失去焦点事件来触发验证,如果你想在用户输入的时候就验证可以使用input事件在Input值改变时触发。
总结:
这里只是一个简单的验证逻辑,真正的应用上随机字符基本不会被使用。因为随机字符验证安全性太低了,模拟操作可以很容易的通过DOM获取到相应的验证码。以上内容是小编给大家分享的【Vue实战089:最简单的登录验证码功能实现】,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。更多Vue实战技巧可以参考以下专栏:
为了方便学习,下面附上本文用到的源码: {{ createdCode}} createCode () { let code = "" let len = 4 // 验证码的长度 let random = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "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") // 随机内容 for (let i = 0; i < len; i++) { // 循环操作 let index = Math.floor(Math.random() * 62) // 取得随机数的索引(0~62) console.log("Math.random()", index) code += random[index] // 根据索引取得随机数加到code上 } this.createdCode = code // 把code值赋给验证码 } //无法获取到this.createdCode值 const checkCode = function (rule, value, callback) { if (value !== this.createdCode) { callback(new Error("验证码错误")) } else { callback() } } //利用el-input的blur失去焦点事件来触发验证 checkCode () { if (this.loginForm.vercode !== this.createdCode) { this.$message({ message: "验证码错误,注意大写字母", type: "warning" }) } else { this.check = true } }
VIVO首款5nm芯片5G手机X60X60PROvivo公司于2020年12月29日发布x系列新款5G手机X60和X60PRO,这款5G手机采用三星Exynos1080的5nm制程工艺处理器,也是VIVO品牌第一款5nm制程工艺
艾康尼克联合超跑制造商WMotors重塑乘客体验当给一辆高端电动汽车注入超级跑车的DNA时,会得到什么?其结果是一辆豪华电动汽车,不同于当今市场上任何其他车辆。在跨产品和跨地域的共生合作关系中,在纳斯达克迪拜上市的超级跑车公司W
担忧缓解?恒大股价上涨18在恒大危机中,中国央行周四向国家金融系统注入了1100亿元(170亿美元)现金,缓解了一些市场担忧。中国人民银行希望通过1月份以来最大的现金补充,平息因中国恒大集团(HKEX033
特斯拉获赫兹10万辆电动车订单市值突破1万亿美元周一,特斯拉(NasdaqTSLA)的市值达到了1万亿美元,其股价在与租车巨头赫兹(OTCHTZZ)的交易中超过每股1000美元。在周一的一份声明中,赫兹表示已订购10万辆Mode
realmeGT与realmeGT大师版有什么区别最近,realme在销售realmeGT系列的基本上再次上市一款5G手机,即realmeGT大师版,这两款机器价位不同外观不同配置也有一点点区别,今天我们将这两款机器进行对比,列出
一加8T来了搭载骁龙865plus,屏幕素质依旧强悍今年上半年的手机圈可以说是八仙过海各显神通,旗舰手机性能虽然相差不是特别多,但是每家手机都有自己的长处。一加8也是表现不俗,去年一加除了一加7之外,还发布了一加7T,据外国数码博主
OPPOFINDX3PROOPPOFINDX3系列于2021年3月11日发布,3月19日上市,它主要有FINDX3和FINDX3PRO两个型号,内存方面FINDX3有8G128G和8G256G,FINDX3
华为P50PRO系列上市了2021年7月29日,华为余承东上台发布了华为P50系列。目前只看到P50PRO一个型号,分为海思麒麟9000的4G版本和高通骁龙888的4G版本,搭配8GB256GB和8GB51
夏日晴海,OPPOReno6系列新品发布毕业派对2021年5月27日,中国,秦皇岛阿那亚OPPO今日于阿那亚举办夏日晴海SummerFantasyOPPOReno6系列新品发布毕业派对,正式发布支持AI焕采美妆及焕采光斑人像视频
VIVO新款S10vivo官方宣布vivoS10系列将于2021年7月15日正式发布,月底正式现货销售。分为S10和S10PRO,S10有8GB128GB和8GB256GB,S10PRO有12GB2
realme(真我)GTNeo闪速版与GTNeo的具体区别realme(真我)GTNeo闪速版与GTNeo硬件配置区别不是太大,通过对两款机器的价位与主要硬件配置(处理器屏幕摄像头拍照电池充电续航散热等)逐一详细对比,不同点用粗体加黑提醒