js 利用localStorage限制重复获取验证码

  • Post author:
  • Post category:其他


定义:

localStorage是将session永久存储在本地

用法:

localStorage.setItem("key", "value");  //保存session
localStorage.getItem('key'); //获取key字段的session
localStorage.remove('key'); //删除key字段的session
localStorage.clear();  //清除所以本地session

通过js实现验证码获取限制:(60s内只能获取一次)

实现原理:

当成功获取验证码时的时间戳用localStorage方法存入本地session中,当再次点击获取验证码时,就用当前的时间戳减去上次获取成功获取验证码的时间戳,如果值小于60s,则抛出错误退出点击事件。如果值大于60s,才能将请求发送到后端获取验证码。

具体实现代码:

//执行获取验证码点击事件
$('#getcode').click(function () {
   //判断是否已经获取过验证码,如果session不为空,则判断session是否过期
   if(localStorage.getItem('time') != null){
       //获取当前时间戳
       var currenttime=new Date().getTime();
       //验证当前时间戳减去上次成功获取验证码的时间戳是否小于60s
       isexpire = (currenttime - localStorage.getItem('time')) < 60*1000;
       if (isexpire){
          //如果两次获取验证码的间隔小于60s则抛出错误提示并退出点击事件
          layer.open({
               title:"验证码获取失败",
               content:"60s内只能获取一次验证码",
               icon:5,
               anim:6
              });
            return false;
        }else{
            //时间间隔超过60s,清除上次获取验证码的session
             localStorage.clear();
        }
    }
    //满足60s内没有获取验证码,将数据发送到后端进行处理
    $.ajax({
    url:"{:url('admin/index/forget')}",
          type:'post',
          data:$('form').serialize(),
          dataType:'json',
          success:function (data) {
          if(data.code == 1){
                 //后端成功发送验证码,获取当前时间戳并存入session中
                 let time=new Date().getTime();
                 localStorage.setItem('time', time);



版权声明:本文为yang1234567898原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。