Oracle Apex中应用程序级别的会话超时

问题描述

在我的应用程序ID中,我更改了安全属性->最大会话空闲时间(以秒为单位)为900秒,但是问题是,如果我在同一页码上,则会给我会话超时消息。

我希望会话超时不因用户页面或其他选项卡上的移动而受到限制,因为我的所有应用程序工作大部分都在一页中。

enter image description here

解决方法

会话超时由Web应用程序服务器管理,它需要一个请求或表单提交来告诉他,嘿,我还活着,伙计,请不要杀死会话,因此,您需要创建一个ajax请求告诉Web服务器您仍然在那里。

您可以使用此脚本检测用户的不活动状态

var IDLE_TIMEOUT = 60; //seconds
var _idleSecondsCounter = 0;
document.onclick = function() {
    _idleSecondsCounter = 0;
};
document.onmousemove = function() {
    _idleSecondsCounter = 0;
};
document.onkeypress = function() {
    _idleSecondsCounter = 0;
};
window.setInterval(CheckIdleTime,1000);

function CheckIdleTime() {
    _idleSecondsCounter++;
    var oPanel = document.getElementById("SecondsUntilExpire");
    if (oPanel)
        oPanel.innerHTML = (IDLE_TIMEOUT - _idleSecondsCounter) + "";
    if (_idleSecondsCounter >= IDLE_TIMEOUT) {
        alert("Time expired!");
        document.location.href = "logout.html";
    }
}

查看此帖子Detecting user inactivity over a browser - purely through javascript