使用Ajax / JQuery将原始密码作为用户类型进行检查

时间:2013-01-30 04:19:54

标签: javascript ajax jquery

我想允许用户在“更改密码”页面上输入原始密码,并让页面在没有刷新的情况下检查是否正确。我想在密码正确时在文本框旁边显示一个复选框图像。

但是,我有两个问题。 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,缺少密钥,我不确定它在安全性方面是否也是万无一失。

1 个答案:

答案 0 :(得分: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({