小编典典
创建一个活动检查器,该检查器每分钟检查是否发生了任何用户活动(mouseclick,按键),并向服务器端执行心跳,以在用户活动时保持会话活动,而在用户不活动时不执行任何操作。如果30分钟没有任何活动(或在服务器端设置了任何默认会话超时),请执行重定向。
这是一个启动示例,jQuery几乎没有帮助来绑定click和keypress事件并触发ajax请求。
$(document).ready(function() {
$.active = false;
$('body').bind('click keypress', function() { $.active = true; });
checkActivity(1800000, 60000, 0); // timeout = 30 minutes, interval = 1 minute.
});
function checkActivity(timeout, interval, elapsed) {
if ($.active) {
elapsed = 0;
$.active = false;
$.get('heartbeat');
}
if (elapsed < timeout) {
elapsed += interval;
setTimeout(function() {
checkActivity(timeout, interval, elapsed);
}, interval);
} else {
window.location = 'http://example.com/expired'; // Redirect to "session expired" page.
}
}
创建一个Servlet监听/heartbeat并基本上执行以下操作的:
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
request.getSession();
}
使会话保持活动状态。
当您将已登录的用户存储在会话中时,只要会话过期,它将“自动”注销。因此,您无需手动注销用户。
2020-09-24