动态令牌验证遇到的问题(判断用户长按backspace键)
因为最近负责泰康项目的前端工作,他们的登录需要进行安全验证,也就是所谓的双因素验证,即在OA平台登录过后,还需要安全部门发送安全令牌进行验证。令牌验证效果如下:

主要功能有:1、默认第一项focus。 2、输入后自动跳转到下一个 3、输入超过2位自动改为1位数 4、长按backspace全部删除
html部分代码:具体就是几个Input 样式可以自己去改
<input v-model="num1" ref="num1" class="codeInp" type="text">
<input v-model="num2" ref="num2" class="codeInp" type="text">
<input v-model="num3" ref="num3" class="codeInp" type="text">
<input v-model="num4" ref="num4" class="codeInp" type="text">
<input v-model="num5" ref="num5" class="codeInp" type="text">
<input v-model="num6" ref="num6" class="codeInp" type="text">
实现输入一个自动跳到下一个方法如下:
使用watch方法进行监听,当输入的值的长度大于等于1时,我就认为用户输入过了,如果输入超过2位,自动取最后一位,然后让下一个聚焦
watch: {
num1(val) {
if(this.num1.length>=1){
this.num1 = val.slice(-1);
this.changeFn(this, "num2");
}
},
num2(val) {
if(this.num2.length>=1){
this.num2 = val.slice(-1);
this.changeFn(this, "num3");
}
},
num3(val) {
if(this.num3.length>=1){
this.num3 = val.slice(-1);
this.changeFn(this, "num4");
}
},
num4(val) {
if(this.num4.length>=1){
this.num4 = val.slice(-1);
this.changeFn(this, "num5");
}
},
num5(val) {
if(this.num5.length>=1){
this.num5 = val.slice(-1);
this.changeFn(this, "num6");
}
},
num6(val) {
if (this.num6.length>=1) {
this.num6 = val.slice(-1);
}
}
},
让下一个聚焦的方法如下:
changeFn(_this, str) {
_this.$refs[str].focus();
}
遇到最大的问题是长按后退键时,把所有值置空,然后第一个聚焦
最开始的思路是,用户按下记录一个时间,然后使用定时器setInterval,每100毫秒在获取一次时间,如果后获取的时间-按下的时间>1000毫秒,则判定用户长按了,然后置空所有值和聚焦。但是实现起来在我执行完操作后,使用clearInterval发现无法清除定时器。
于是换了个思路,使用setInterval监听,初始设置一个状态为false,按下后退键状态改为true,键盘抬起状态改为false,500毫秒后如果键盘没有抬起即状态扔为true,则判定用户长按了后退键,相比setInterval更加方便,代码如下:
let _this = this;
document.onkeydown = function(e){
e = e || event;
if(e.keyCode == 8){
_this.pressBack = true;
setTimeout(()=>{
if(_this.pressBack){
_this.num1 = '';
_this.num2 = '';
_this.num3 = '';
_this.num4 = '';
_this.num5 = '';
_this.num6 = '';
_this.$refs.num1.focus() }
},500)
}
} document.onkeyup = function(e){
e = e || event;
if(e.keyCode == 8){
_this.pressBack = false;
}
}
动态令牌验证遇到的问题(判断用户长按backspace键)的更多相关文章
- .NET WebAPI 用ActionFilterAttribute实现token令牌验证与对Action的权限控制
项目背景是一个社区类的APP(求轻吐...),博主主要负责后台业务及接口.以前没玩过webAPI,但是领导要求必须用这个(具体原因鬼知道),只好硬着头皮上了. 最近刚做完权限这一块,分享出来给大家.欢 ...
- 动态令牌-(OTP,HOTP,TOTP)-基本原理
名词解释和基本介绍 OTP 是 One-Time Password的简写,表示一次性密码. HOTP 是HMAC-based One-Time Password的简写,表示基于HMAC算法加密的一次性 ...
- WebAPI 用ActionFilterAttribute实现token令牌验证与对Action的权限控制
.NET WebAPI 用ActionFilterAttribute实现token令牌验证与对Action的权限控制 项目背景是一个社区类的APP(求轻吐...),博主主要负责后台业务及接口.以前没玩 ...
- Nginx集群之SSL证书的WebApi令牌验证
目录 1 大概思路... 1 2 Nginx集群之SSL证书的WebApi令牌验证... 1 3 Openssl生成SSL证书... 2 4 编写.NE ...
- ASP.NET Core Razor页面禁用防伪令牌验证
在这篇短文中,我将向您介绍如何ASP.NET Core Razor页面中禁用防伪令牌验证. Razor页面是ASP.NET Core 2.0中增加的一个页面控制器框架,用于构建动态的.数据驱动的网站: ...
- JMeter接口测试实战-动态数据验证
JMeter接口测试实战-动态数据验证 说到验证就不得不说断言, 先来看下JMeter官方给出断言(Assertion)的定义, 用于检查测试中得到的响应数据等是否符合预期,用以保证测试过程中的数据交 ...
- ThinkPHP表单令牌验证功能详细介绍
注:TP版本为3.1.3 在ThinkPHP框架下,两次提交同一个表单,比如提交信息后在浏览器点击后退退回上次的页面,重新点击提交按钮,就会提示“表单令牌错误”的信息. ThinkPHP新版内置了表单 ...
- ThinkPHP自动令牌验证(附实例)
一.数据表结构 user表结构如下: id username password 二.view模板部分 /view/index.html页面如下: 1 2 3 4 5 6 <form acti ...
- (六)SSO之CAS框架扩展 改动CAS源代码实现与ESS动态password验证对接
题记: 偶尔的偶尔我们会听到这个站点的数据泄露了,那个站点的用户数据泄露了.让用户又一次改动登录password,所以,对于用户数据安全性越发的引起我们的重视了,尤其是一些保密性要求高的站点.更须要添 ...
随机推荐
- oracle学习笔记第一天
oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字 1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...
- Elasticsearch学习笔记(五)索引元数据和集群元数据
一.索引元数据 执行:GET /ecommerce/product/1 返回结果: { "_index": "ecommerce", "_ty ...
- ytkah常用网址导航 关于网站运营等
关于运营的网站 人人都是产品经理 产品100 爱运营 A5网站运营 姑婆那些事儿 馒头商学院 运营者 91运营网 互联网的一些事 jb51网站运营 三联网站运营 从零开始做运营 科技/互联网 cn ...
- Azure基础(二)- 核心云服务 - Azure简介
Azure fundamentals - Core Cloud Services - Introduction to Azure Learn what Microsoft Azure is and h ...
- package,继承,访问修饰符
1.package 包(package),用于管理程序中的类,可用于处理类的同名问题. 1.1定义package的方法 package 包名; package用于定义包,必须写在源文件有效代码的第一句 ...
- (转)测试如何区别是前端的问题还是后台的bug
常常说到的一个IT项目,包括前端开发,后台开发,软件测试,架构,项目经理,产品需求.那么对于一位优秀的软件测试工程师来说,需要区分前端和后台的工作就显得尤为重要. - 什么是前端和后台 简而言之,前端 ...
- MongoDB系列----备份与导入导出
参考: http://my.oschina.net/xiaomaoandhong/blog/63471,<> 1.停掉服务器 然后备份 Mongodb将所有数据都存放在"数据目录 ...
- java学习之匿名内部类
/*匿名内部类 * * 一般用于抽象类和接口 * 因为他们不能实例化对象所以可以通过匿名内部类来帮助他们实例化 * 下面demo是抽象类的例子 * * */ abstract class Cat{ a ...
- 【Maven Jenkins】No resource to compile 还有多少坑要踩。。。LongTimeNoSee
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ toptown-webservice-vcrs ---[INFO] N ...
- Unity XLua之协程
如何使用xlua实现协程,示例代码如下: 转载请注明出处:https://www.cnblogs.com/jietian331/p/10735773.html local unpack = unpac ...