平时我们在项目中进行注册等的时候,会经常用到短信验证的功能,但是现在现在很多短信验证都是存在下面几个问题,例如短信验证时间为60s的时候,
1. 当点击完按钮时,倒计时还没到60s过完时,刷新浏览器,验证码按钮又可以重新点击
2.当点击按钮倒计时开始,例如在50s的时候我关闭了浏览器,过了5s后,我在打开,此时时间倒计时的时间应该是45s左右,但是当重新打开浏览器的时候,按钮又可以重新点击了
为了解决上面的两个问题,就需要把时间都写到localstorage里面去,当打开页面的时候,就去localstorage里面去取,我这里就贴上我的解决方法,因为前几天有个vue的项目用到该方法,所以我这里就写个vue的方法出来吧
重点来啦
在data里面定义几个需要用到的变量:
second: 60,
flag: true,
timer: null // 该变量是用来记录定时器的,防止点击的时候触发多个setInterval
获取短信验证的方法:
getCode() {
let that = this;
if (that.flag) {
that.flag = false;
let interval = window.setInterval(function() {
that.setStorage(that.second);
if (that.second-- <= 0) {
that.second = 60;
that.flag = true;
window.clearInterval(interval);
}
}, 1000);
}
}
写入和读取localstorage:
setStorage(parm) {
localStorage.setItem("dalay", parm);
localStorage.setItem("_time", new Date().getTime());
},
getStorage() {
let localDelay = {};
localDelay.delay = localStorage.getItem("dalay");
localDelay.sec = localStorage.getItem("_time");
return localDelay;
}
防止页面刷新是验证码失效:
judgeCode() {
let that = this;
let localDelay = that.getStorage();
let secTime = parseInt(
(new Date().getTime() - localDelay.sec) / 1000
);
console.log(localDelay);
if (secTime > localDelay.delay) {
that.flag = true;
console.log("已过期");
} else {
that.flag = false;
let _delay = localDelay.delay - secTime;
that.second = _delay;
that.timer = setInterval(function() {
if (_delay > 1) {
_delay--;
that.setStorage(_delay);
that.second = _delay;
that.flag = false;
} else {
// 此处赋值时为了让浏览器打开的时候,直接就显示剩余的时间
that.flag = true;
window.clearInterval(that.timer);
}
}, 1000);
}
}
然后在html挂载页面完成后的生命钩子(mounted)中调用judgeCode()方法就能实现该功能了
原文链接:https://www.cnblogs.com/cythia/archive/2018/04/24/8934585.html
业务需求,需要在系统登陆的时候,使用“滑动图片验证码”,来验证操作的不是机器人。在一般的页面组件引用即可。onReload这个函数一般是用来请求后台图片的。
Validate常用的一些参数和方法:errorElement,errorClass,errorPlacement,errorLabelContainer,errorContainer,wrapper,success,debug
早期的互联网是没有验证码的,随着后来计算机程序的发展,黑客编写了模仿登录、恶意破解密码、刷票、论坛灌水等恶意程序,破坏了整个网络的平衡性。介绍目前常用验证码的分类有哪些:Gif动画验证码、手机短信验证码、手机语音验证码、视频验证码、滑动验证码
在javascript中,不能直接用\\\"==“或“===”判断两个数组是否相等。那么如何判断数组是否相等?我们先来看看直接用\\\"==“或“===”来判断两个数组是否相等,会怎么样?
Web项目中,登录,注册等等功能都需要表单提交,当把用户的数据提交给后台之前,前端一般要做一些力所能及的校验,比如是否填写,填写的长度,密码是否符合规范等等,前端校验可以避免提交不合规范的表单。假如我们有一个表单,校验逻辑如下
Vue项目中实现用户登录及token验证,先说一下我的实现步骤:使用easy-mock新建登录接口,模拟用户数据;使用axios请求登录接口,匹配账号和密码,账号密码验证后, 拿到token,将token存储到sessionStorage中,并跳转到首页
JavaScript 中的所有事物都是对象:字符串、数值、数组、函数等。JavaScript 提供多个内建对象,比如 String、Date、Array 等等。 对象只是带有属性和方法的特殊数据类型。
正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。
陆时需要发送短信验证码或者其他的验证方式来校验是否是本人操作,达到安全性的目的。点击获取验证码时,倒计时,暂时设定倒计时的时间为180秒....
在支持FileReader的浏览器中,可以使用indexOf方法检索文件类型是否为image/开头验证是否是图片。在不支持FileReader的浏览器中使用lastIndexOf与substring方法获取文件后缀判断是否图片
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!