1

私はユーザーのリストを表示するシステムを構築しており、ユーザーを選択すると何らかの形式のパスワードを要求します。これらの値はページの非表示フィールドに保存され、認証の形式としてすべてのリクエストで送信する必要があります。(ここにあるMITMの脆弱性を認識していますが、これは非常に控えめなシステムであるため、セキュリティは大きな問題ではありません)。

次に、現在「ログインしている」ユーザーを認証するために、すべてのリクエストでこれらの値を送信する必要があります。を介してこれを自動化したいのajaxSetupですが、いくつかの問題が発生しています。

私の最初の試みは:

init_user_auth: function(){
    $.ajaxSetup({
        data: {
            'user'    : site_user.selected_user_id(),
            'passcode': site_user.selected_user_pc(),
            'barcode' : site_user.selected_user_bc()
        }
    });
},

ただし、知っておくべきことですが、これは、の呼び出し時に値を1回読み取り、再読み取りするajaxSetupことはありません。私が必要としているのは、ajax呼び出しが行われるたびに実際に関数を呼び出す方法です。

私は現在、ここで何が起こっているのかを理解しようとしています:https : //groups.google.com/forum/?fromgroups=#!topic/jquery-dev/OBcEfgvTJ9I、しかし、炎上戦争とそこで起こっている非常に低レベルのものを通して、何が起こっているのか正確にはわかりません。

これは先に進む方法ですか、それとも事実に直面して各ajax-callに手動でlogin-infoを追加する必要がありますか?

4

2 に答える 2

5

私が正しければ、このサンプルコードを参照してください。各ajaxリクエストに特定の値が追加されます。

(function ($) {
    var _ajax = $.ajax,
    A = $.ajax = function(options) {                    
        if (typeof options.data == 'object') {                      
            $.extend( options.data, A.data );
        } else if (typeof options.data == 'string' && options.data.length > 0) {
            for (var key in A.data) {
                options.data += '&' + encodeURIComponent(key) + '=' + encodeURIComponent(A.data[key]);
            }
        } else {
            options.data = A.data;
        }
        return _ajax(options);
    };
})(jQuery);

そして、あなたはそれを次のように呼びます:

$.ajax.data = { "user": 10, "pass" : 20 }; //params that always need to be passed

次に、ajax呼び出し、

$.ajax({
    type: "POST",
    url: "http://localhost/blg/crl_chk.php",
    data : { "first" : 1},  //now those params will be added wit this
    success: function(resp) {
    console.log( resp );
    }
});

データなしで呼び出す場合$.ajax、それらのパラメーターが渡されます。

このような意味ですか

于 2012-09-06T10:15:41.253 に答える
2

呼び出したい関数は、Ajax設定オブジェクトがスタブとマージされているときにのみ呼び出されるようです。(おそらく最初のajaxリクエスト中)

できることは、データオブジェクトが関数ではなくグローバル変数を参照するようにすることです。

「しかし、それはあなたが言うたびに関数を呼び出さないの$.ajax()ですか?

.ajaxSend()またはで関数を呼び出して.ajaxStart()、グローバル変数を更新してもらいます。

http://api.jquery.com/ajaxSend/

http://api.jquery.com/ajaxStart/

于 2012-09-06T10:15:05.593 に答える