2

这个问题不是关于安全性或“如何正确实施”相关问题,而是关于预检查输入值的概念。

作为第一种方法,我尝试实现以下过程(请注意,在每个check if语句中,如果为 false,该方法返回一个标识符值,否则算法继续)

Save entered values in oldPW, newPW1, newPW2
check if oldPW is correct (Ajax request)
    check if newPW1 == newPW2
        check if length of newPW1 is >=6
            check if newPW1 contains legal characters
                check if newPW1 contains required characters (like at least one uppercase char etc.)

这种方法引起了问题,我认为它与异步 ajax 请求有关。我返回一个特定的标识符整数,并调用类似的方法

switch(checkPasswords(oldPW, newPW1, newPW2){
    case 0:
        // alert something suitable
        break;
    case 1:
        // alert something suitable
        break;

    //(...)

    case n-1:
        // alert something suitable
        break;
    case n:
        // everything is ok, change password
        break;
}

最后检查旧密码是否更干净?或者甚至直接在尝试更改密码时(假设新的所需密码满足要求)并因此只有一个 ajax 请求?共同的概念是什么?

4

1 回答 1

1

我个人建议通过在用户离开旧密码输入 (onblur) 并拥有自己的处理程序/成功函数和第二个函数来处理密码的实际更改时检查旧密码来分离 Ajax 请求。

给定这个标记:

<input type="text" id="oldPassword" value="" />
<input type="text" id="newPassword" name="newPassword" value="" />
<input type="text" id="confirmNewPassword" name="confirmNewPassword" value="" />
<input type="button" id="submitButton" value="Reset Password" />

而这个(伪代码)JS:

<script type="text/javascript">
//some doc ready-ish function
$('#oldPassword').blur(function(){
//ajax request to validate the pw
//trigger some success / failure message
//if failure, disable your #submitButton by unbinding the click event or something to that effect 

//if its successful, make sure you're submit button event is bound again
}); 

$('#submitButton').click(function(){
//perform new pw validation 
//submit your reset password request 
});

</script>
于 2013-04-09T22:05:35.873 回答