1

我想允许用户在更改密码页面上输入他们的原始密码,并让页面检查它是否正确而无需刷新。当密码正确时,我希望在文本框旁边显示一个复选框图像。

不过,我有两个问题。1)如何以安全的方式做到这一点,以及 2)每次按键触发 ajax 调用似乎并不总是能捕捉到每个按键。

这是我到目前为止所拥有的:

$("#oldPW").keyup(function () {
    checkPW();
});

// on keyup
function checkPW() {
    var pw = $("#oldPW").val();
    var dataSring = "pw=" + pw;
    $.ajax({
        type: "POST",
        url: "checkPW",
        data: dataSring,
        cache: false,
        success: function (data) {
            if (data== "True") {
                $("#pwok").fadeIn();
            }
            if (data== "false") {
                $("#pwok").fadeOut();
            }
        }
    });
}

我看到上面代码的问题是用户可以手动显示图像,这将绕过上面的“安全性”。我可以在用户按下提交后再次检查,但这并不能解决问题 1,缺少键盘,而且我不确定它在安全性方面是否万无一失。

4

1 回答 1

1

对于问题 #1,您需要在服务器端验证密码,无论. 然后,您不必担心有人绕过客户端。

至于 #2,问题是您不知道 ajax 调用将以什么顺序完成,因此之前的调用可能会在最近的调用之后完成。您可以通过多种方式处理此问题,但一种是在每次重试时中止请求:

$("#oldPW").data('lastRequest', {abort: function () {}});

function checkPW() {
    var pw = $("#oldPW").val();
    var dataSring = "pw=" + pw;
    $("#oldPW").data('lastRequest').abort();
    $("#oldPW").data('lastRequest', $.ajax({
于 2013-01-30T04:25:36.163 回答