当前位置:网站首页>#夏日挑战赛# HarmonyOS 实现一个滑块验证
#夏日挑战赛# HarmonyOS 实现一个滑块验证
2022-08-04 15:34:00 【51CTO】
前言
日常我们经常能见到验证码,网站上的验证码的作用是保护网站安全,一般网站都要通过验证码来防止机器大规模注册等危害。一般验证码有:图像验证、算数验证、滑动验证等。有些验证码验证起来有些麻烦,对我来说,最方便的验证方式是滑动滑块验证,滑块验证的使用体验非常好。
所以本篇文章我来尝试着实现一个滑动验证码。当然,这种验证码一般都是第三方来处理的,因为它不仅仅只是滑动,还会判断用户的拖放轨迹是否符合真实用户的行为特征,所以我只是简单的实现。
介绍
这是一个滑块验证码,用户只需要将滑块滑到最右侧,即可判断用户是否验证成功。
效果展示
我为滑块验证添加了验证条件,用户可以对滑块速度做限制,例如:滑块滑倒右侧时,平均速度小于3,如果用户滑动速度大于3时,就验证失败
我一共滑动了三次
- 第一次:没有滑倒最右侧,认证失败
- 第二次:滑动的速度太块,认证失败
- 第三次:滑动速度符合限制,认证成功
使用
1.参数支持
参数名称 | 参数描述 | 参数类型 | 默认值 |
---|---|---|---|
width | 滑块宽度 | Number | 300 |
height | 滑块高度 | Number | 50 |
limit | 滑块的速率限制 | Number | 4 |
2.事件支持
事件名称 | 事件描述 |
---|---|
getMsg | 验证通过或不通过事件 |
用户可以设置限制体速率,可以通过自定义事件getMsg,获取到验证的结果
原理分析
1.滑动原理
首先,我们需要在组件加载完成时,获取到滑块可以滑动的最大距离,我们用得到的最大距离,来判断滑块是否滑倒最右侧
注意组件的生命周期,在自定义组件中,是没有onShow的,需要用onLayoutReady(),这个钩子函数是自定义组件布局完成调用的。
然后,在触摸屏幕事件中,获取触摸的X坐标,此坐标为起始点;在触摸移动事件中,获取最新的X坐标,再减去起始坐标,就能得到偏移量
最后,判断偏移量是否大于滑块可以滑动的最大距离,如果不大于,将偏移量设置为滑块的滑动距离
为了更好理解,我把滑块隐藏部分显示出来
2.验证原理
这里的验证不严谨,只是一个小尝试
验证原理主要是通过滑动的平均速度来判断的,如果用户滑动速度超过设定速度,则验证失败
所以我们需要使用到时间戳
第一步,我们在移动事件一开始,获取到当前的时间戳;在移动事件结束将当前时间戳赋值给上一个时间,这样通过当前时间戳 -上一个时间
就能获取到时间间隔
第二步,我们还需要获取到偏移量,上面滑动原理已经介绍了如何获取
第三步,有了时间间隔和偏移量,我们可以计算出本次滑动的速度,再利用总的滑动次数来获取到平均速度。
最后,我们只需要在touchend事件中做判断,判断滑块是否到达滑动的最大距离,并且滑块滑动的平均速度是否符合限制。
完整代码
index.js
总结
不足点:验证条件比较简单
边栏推荐
猜你喜欢
随机推荐
remote: Check Access Error, please check your access right or username and password!fatal: Authenti
【已解决】allure无法生成json文件和AttributeError: module ‘allure‘ has no attribute ‘severity_level‘
365天挑战LeetCode1000题——Day 049 非递增顺序的最小子序列 贪心
饿了么智能头盔专利获授权,进一步提升骑手安全保障
明明加了唯一索引,为什么还是产生重复数据?
使用百度EasyDL实现森林火灾预警识别
阿尔萨斯监控平台&普罗米修斯监控平台对服务器资源的监控
postman “header“:{“retCode“:“999999“
C# 谁改了我的代码
Go 言 Go 语,一文看懂 Go 语言文件操作
IP第十八天笔记
你以为在做的是微服务?不!你做的只是分布式单体!
李沐的深度学习笔记来了!
HarePoint Analytics for SharePoint Online
Redis-哨兵模式
C# 将dll打包到程序中
我说MySQL联合索引遵循最左前缀匹配原则,面试官让我回去等通知
【北亚数据恢复】IBM System Storage存储lvm信息丢失,卷访问不了的数据恢复方案
手搓一个“七夕限定”,用3D Engine 5分钟实现烟花绽放效果
Next -18- 添加代码复制按钮