js记录密码出错次数并锁定账号30分钟

简介:   下面要说的是网站中一个常见的功能,在客人使用抵用券或者其他来支付的时候需要验证密码,如果密码输入错误5次就锁定,不在让客人使用抵用券了,在这里是使用的cookie来实现的,不太严谨。思路很简单,在输入密码错误的时候,使用cookie保存2个变量,一个是标识当前客人是否已经被锁定,这个只保存30分钟,一个是记录输入错误次数,这个可以长时间保存。

  下面要说的是网站中一个常见的功能,在客人使用抵用券或者其他来支付的时候需要验证密码,如果密码输入错误5次就锁定,不在让客人使用抵用券了,在这里是使用的cookie来实现的,不太严谨。
思路很简单,在输入密码错误的时候,使用cookie保存2个变量,一个是标识当前客人是否已经被锁定,这个只保存30分钟,一个是记录输入错误次数,这个可以长时间保存。函数根据是否锁定弹出相应的信息
if(输入密码错误)
{
    if(锁定标识为false)
    {
      保存出错次数为1;
      返回锁定状态为false;
    }
    else
    {
      取出出错次数;
    if(出错次数小于5)
    {
        累加出错次数并保存;
        返回锁定状态为false;
    }
    else
    {
        保存锁定状态标识30分钟;
        设置出错次数为0并保存;
        返回锁定状态为true
    }
    }            
}
else
{
    返回锁定状态为false
}  

function logInputFaile() {

    //var count = document.getElementById("userErrCoun").value;

    //var lockTim = document.getElementById("userPinLocTim").value;

    var uidErrCoun = document.getElementById("Userid").value + "userErrCoun";

    var PinLoc = document.getElementById("Userid").value + "userPinLocTim";

 

    var count = getCookie(uidErrCoun);

    var lockTim = getCookie(PinLoc);

 

    if (lockTim == null || lockTim == "") {                       //未锁定

        var expireDate = new Date();

        expireDate.setTime(expireDate.getTime() + 24 * 60 * 60 * 1000);

        if (count == null || count=="") {                  //第一次输入错误

            setCookie(uidErrCoun, 1, expireDate.toGMTString(), "/");

            return false;

        }

        else {

            var expireDate = new Date();

            expireDate.setTime(expireDate.getTime() + 24 * 60 * 60 * 1000);

            var count = getCookie(uidErrCoun);

            if (count <= 5) {                                //出错小于5次

                setCookie(uidErrCoun, ++count, expireDate.toGMTString(), "/");

                return false;

            }

            else {                                          //大于5次,锁定账号

                var expireDate = new Date();

                expireDate.setTime(expireDate.getTime() + 30 * 60 * 1000);

                setCookie(PinLoc, "userPinLocTim", expireDate.toGMTString(), "/");

                deleteCookie(uidErrCoun, "/");

                return true;

            }

        }

    }

    else {

        return true;

    }

}

  这里很想说明一下设置cookie的过期时间,本来想找到一个类似于adddays()这样的方法,但是javascript中没有类似的方法,只有一个setTime,并且要和getTime搭配之用,其他的方法如setDate(day)是设置当前时间中的天,这个和我们的目的有点差别,一般我们想要设置当前这个cookie多长时间内过期,而不是在一个具体的时间点过期,所以大多数时间我们的思维是:保存用户账号50天,而不是从现在开始计算好50天,然后再当前时间基础上设置天数为50,并且还要考虑50天之后是几号,月份是多少,年份是多少,如果闰年就更麻烦了。

dateObject.getTime():getTime() 方法可返回指定的日期dateObject距 1970 年 1 月 1 日之间的毫秒数。
dateObject.setTime(millisec):setTime() 方法以时间据 GMT 时间 1970 年 1 月 1 日午夜之间的毫秒数设置 Date 对象。

  所以只要获取当前时间距离格林威治时间的毫秒数,再加上想要过期的时间的毫秒数,在使用setTime设置就可以得到正确的过期时间。

  最后调用这个函数,如果返回true就证明锁定了,弹出提示,为false证明未被锁定。代码如下: 方法中用到的工具方法setCookie和getCookie是javascript中读写cookie的包装方法,原型请参考另外一篇随笔 javascript读写cookie

作者:Tyler Ning
出处:http://www.cnblogs.com/tylerdonet/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过以下邮箱地址williamningdong@gmail.com  联系我,非常感谢。

目录
相关文章
|
4月前
|
JavaScript 数据安全/隐私保护
JS正则验证密码
JS正则验证密码
|
3月前
|
移动开发 JavaScript 安全
js的常见的三种密码加密方式-MD5加密、Base64加密和解密和sha1加密详解总结
js的常见的三种密码加密方式-MD5加密、Base64加密和解密和sha1加密详解总结
109 0
|
8月前
|
JavaScript 数据安全/隐私保护
js记住密码
js记住密码
36 0
|
4月前
|
前端开发 JavaScript 数据安全/隐私保护
使用 HTML、CSS 和 JavaScript 制作的随机密码生成器
使用 HTML、CSS 和 JavaScript 制作的随机密码生成器
84 0
|
前端开发 JavaScript 数据安全/隐私保护
react + zarm + rc-form + crypto-js 实现个人中心页面,头像上传,密码重置,登录退出功能
react + zarm + rc-form + crypto-js 实现个人中心页面,头像上传,密码重置,登录退出功能
99 0
react + zarm + rc-form + crypto-js 实现个人中心页面,头像上传,密码重置,登录退出功能
|
JavaScript
JS案例:小球拖动,记录轨迹,并原路返回
JS案例:小球拖动,记录轨迹,并原路返回
103 0
【leetcode刷题记录】js-两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。
|
JavaScript
JS快速排序记录
JS快速排序记录
|
前端开发 算法 JavaScript
【JavaScript-事件②】表单元素的属性操作,密码显示隐藏的实现
阅读使人充实,会谈使人敏捷,写作使人精确。 ——培根
124 0
【JavaScript-事件②】表单元素的属性操作,密码显示隐藏的实现
【问题记录】在执行js的时候报错:missing ) after argument list
【问题记录】在执行js的时候报错:missing ) after argument list