vue短信验证性能优化写入localstorage中
平时我们在项目中进行注册等的时候,会经常用到短信验证的功能,但是现在现在很多短信验证都是存在下面几个问题,例如短信验证时间为60s的时候,
1. 当点击完按钮时,倒计时还没到60s过完时,刷新浏览器,验证码按钮又可以重新点击
2.当点击按钮倒计时开始,例如在50s的时候我关闭了浏览器,过了5s后,我在打开,此时时间倒计时的时间应该是45s左右,但是当重新打开浏览器的时候,按钮又可以重新点击了
为了解决上面的两个问题,就需要把时间都写到localstorage里面去,当打开页面的时候,就去localstorage里面去取,我这里就贴上我的解决方法,因为前几天有个vue的项目用到该方法,所以我这里就写个vue的方法出来吧
组件里面的html代码:
<div class="mtui-cell__ft" @click="getCode">
<button class="mtui-vcode-btn mtui-text-center" v-if="flag">获取短信</button>
<button class="mtui-vcode-btn mtui-text-center" v-if="!flag">剩余{{second}}s</button>
</div>
重点来啦
在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()方法就能实现该功能了
vue短信验证性能优化写入localstorage中的更多相关文章
- vue 短信验证
直接贴代码: HTML <div class="phone"> <div class="number"> <p class=&qu ...
- Luffy之注册认证(容联云通讯短信验证)
用户的注册认证 前端显示注册页面并调整首页头部和登陆页面的注册按钮的链接. 注册页面Register,主要是通过登录页面进行改成而成. 先构造前端页面 <template> <div ...
- 注册登录页面修订-Python使用redis-手机验证接口-发送短信验证
登录页面修订 views.Login.vue <template> <div class="login box"> <img src="@/ ...
- thinkphp实现短信验证注册
前言 注册时经常需要用到短信验证码,本文记录一下思路和具体实现. 短信验证平台使用云片,短信验证码的生成使用thinkphp. 思路 1.用户输入手机号,请求获取短信验证码. 2.thinkphp生成 ...
- 如何利用 LTE/4G 伪基站+GSM 中间人攻击攻破所有短信验证
这次公开课请来的嘉宾对自己的简介是: 连续创业失败的创业导师:伪天使投资人:某非知名私立大学创办人兼校长:业余时间在本校通信安全实验室打杂. 自从他在黑客大会上演讲<伪基站高级利用技术——彻底攻 ...
- PHP阿里大鱼短信验证
PHP阿里大鱼短信验证 第一步 登陆阿里大于注册账号,在用户管理中心创建应用,确定AppKEY和App Secret还有配置签名 第二步 在应用管理中选择SDK下载,或者直接点击http://down ...
- 基于ThinkPHP与阿里大于的PHP短信验证功能
https://blog.csdn.net/s371795639/article/details/53381274 PHP阿里大鱼短信验证 第一步 登陆阿里大于注册账号,在用户管理中心创建应用,确定A ...
- Mob.com 短信验证的简单使用
1.环境配置 http://wiki.sharesdk.cn/android-短信sdk集成文档/ a.sdk下载 http://www.mob.com/#/downloadDetail/SMS/an ...
- python基于LeanCloud的短信验证
python基于LeanCloud的短信验证 1. 获取LeanCloud的Id.Key 2. 安装Flask框架和Requests库 pip install flask pip install re ...
随机推荐
- Pl/sql学习笔记2
-- declare type vsal_table is table of emp.sal%type; a vsal_table; begin --必须得初始化 并且有数量上的区分 从一开的 a ...
- HDU 1170 Shopping Offers 离散+状态压缩+完全背包
题目链接: http://poj.org/problem?id=1170 Shopping Offers Time Limit: 1000MSMemory Limit: 10000K 问题描述 In ...
- 通用的将Excel导入数据集的方法
http://blog.csdn.net/baronyang/article/details/7048563
- Linux内核0.11 bootsect文件说明
一.总体功能介绍 这是关于Linux-kernel-0.11中boot文件夹下bootsect.s源文件的说明,其中涉及到了一些基础知识可以参考这两篇文章. 操作系统启动过程 软盘相关知识和通过BIO ...
- C#全局钩子和局部钩子记录
源自:https://blog.csdn.net/programvae/article/details/80292076 最近碰巧要使用键盘钩子,于是在网上搜索了一番,发现大多数博客的文章都是雷同的, ...
- 开源自己实现一个.net rpc框架 - Machete.Rpc
Machete.Rpc Machete.Rpc 是一个轻量级的Rpc(远程过程调用的)框架.底层代理使用了Emit提高了效率,底层通信采用DotNetty框架以提升通信的效率.目前正在逐步完善中. G ...
- Tomcat安全配置与性能优化
Tomcat 是 Apache软件基金会下的一个免费.开源的WEB应用服务器,它可以运行在 Linux 和 Windows 等多个平台上,由于其性能稳定.扩展性好.免费等特点深受广大用户喜爱.目前,很 ...
- bzoj1036 [ZJOI2008]树的统计Count(树链剖分)
Description 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. Q ...
- 基于element-ui的后台系统表格、dialog、筛选、自定义按钮、分页的一次性封装
方便基础业务开发封装的一套组件,基于vue2.5.x和element-ui,可以通过配置自动生成表格展示,表格新增.编辑功能.分页.筛选项.自定义显示表格数据等功能. 先上演示图片 --------- ...
- Wow! Such Doge! HDU - 4847(虽然是道水题 但很有必要记一下)
就是求出现了多少次doge 不区分大小写 巧用字符串函数 isalpha 判断是否是字母 tolower 转换为小写字母 toupper 转换为大写字母 strncmp字符串比较函数 能限制比较的 ...