SugarCRM REST API会话经常过期

时间:2012-11-30 10:11:16

标签: rest sugarcrm

我在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并设置session_id(全局范围) 然后使用此会话ID我调用REST API的search_by_module函数。 它工作正常,但如果经常提出多个请求,则会显示无效的会话ID。

虽然我在拨打login之前尝试再次拨打search_by_module功能。 主要问题是当我在从search_by_module返回的响应和渲染HTML之后尝试调用其他REST函数时,它说我无效会话。当我们知道服务器会话在24分钟后过期(我们的糖实例托管的服务器)时,我无法弄清楚为什么会话会立即过期

1 个答案:

答案 0 :(得分:2)

我打赌你因为项目编号3而得到这个:

1 /定义了一个错误回调,它检查特定的响应-invalid login-并调用登录功能。阅读你的代码,我想这是ProcessingFlag = 3;工作。

2 /确保登录功能正确且全局地更新session_id,以便将来的函数调用将获得正确的值。

3 /确保您在所有rest_data中将新的session_id作为FIRST参数传递给所有后续调用。我抓住了这个并且失去了很多时间才发现SugarCRM DOESN'T在其rest_data中支持命名参数(它是不是很好地实现了函数参数?)这是因为我添加了session_id作为最后一个参数而且所有我的REST调用返回了无效ID。