3

JavaScript で REST API を使用しています。REST API を複数回要求すると、(応答)無効なセッション IDが返されますが、このセッション ID でデータを取得したため、有効なセッション ID を提供しています。
誰もがこの問題に遭遇しましたか?

function sugarLogin(url, user, password) {
var request = new XMLHttpRequest();
var params = {
    user_auth: {
        user_name: user,
        password: password
    },
    name_value_list: [{
        name: 'notifyonsave',
        value: 'true'
    }]
};
var json = $.toJSON(params);
var crm_api = url;
request.open("POST", crm_api, true);
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.onreadystatechange = function () {
    if (request.readyState == 4 && request.status == 200) {
        var response = request.responseText;
        var response_obj = jQuery.parseJSON(response);

        if (response_obj) {
            if (response_obj.name && response_obj.name == "Invalid Login") {
                //invalid login
                ProcessingFlag = 3;
            } else {
                session_id = response_obj.id;
                ProcessingFlag = 1;
            }
        }
    } else if (request.readyState == 4 && request.status == 404) {
        ProcessingFlag = 2;
    }
}
request.send("method=login&input_type=JSON&response_type=JSON&rest_data=" + json);}

上記のコードを使用しloginて設定し(グローバル スコープ)、このセッション ID を使用してREST API の関数をsession_id呼び出しています。search_by_module正常に動作していますが、複数のリクエストが頻繁に行われると、無効なセッション ID と表示されます。

login呼び出す前に関数を再度呼び出そうとしましたがsearch_by_module。主な問題は、応答が HTML から返されてレンダリングされた後に他の REST 関数を呼び出そうとしたときにsearch_by_module、セッションが無効であると表示されることです。サーバーセッションが24分後に期限切れになることがわかっているのに、セッションがすぐに期限切れになる理由がわかりません(シュガーインスタンスがホストされているサーバー)

4

1 に答える 1

2

項目番号 3 のために、これを取得していると思います。

1/ その特定の応答 (無効なログイン) をチェックし、ログイン関数を呼び出すエラー コールバックを定義します。ProcessingFlag = 3;あなたのコードを読んで、これは仕事だと思います。

2/ login 関数が session_id を正しくグローバルに更新して、今後の関数呼び出しで正しい値が取得されるようにします。

FIRST3/すべてのrest_dataのパラメーターとして、その新しいsession_idを後続のすべての呼び出しに渡していることを確認してください。私はこれに巻き込まれ、SugarCRMDOESN'Tがその rest_data で名前付きパラメーターをサポートしていることを知るためだけに何時間も無駄にしました (関数引数の実装が不十分ですか?)無効な ID を返しています。

于 2012-12-02T09:13:29.213 に答える