我有一个在Websphere上运行spring MVC的Web应用程序,我正在尝试实现会话到期确认。我现在在哪里重定向,如果他们选择退出但我不知道如果选择这样做会更新会话。
到目前为止,我理解我正在使用jQuery和ajax向服务器发送请求,但不知道在哪里(url),也不知道参数或预期的响应。有谁知道我是如何发现这一点的?它是春季会议的标准功能还是我必须编写自定义函数来解决这个问题?
答案 0 :(得分:0)
我能够通过组合来自多个来源的信息来解决这个问题。我想出了以下代码:
function timeoutMessage(){
var popupdate = new Date();
var renewSession = confirm('Your Session is about to expire!\n\nYou will be logged out in 2 minute.\nDo you want to stay signed in?');
if(renewSession){
var response = new Date();
if(response - popupdate > 120000){
alert("Response took too long, current session has ended. \nRedirecting to login.");
}else{
pingServer();
resetTimeout();
}
}else{
window.location.href = "{app logout url}";
}
}
function pingServer(){
jQuery.ajax({url: "{valid server page url}",type: "HEAD",complete: function (XMLHttpRequest, textStatus) {}});
}
function resetTimeout(){
window.setTimeout(function(){timeoutMessage();},1080000);
}
$(document).ready(function()
resetTimeout();
});
该函数设置一个与会话超时前两分钟重合的计时器。大多数站点将提供上述大部分代码,但pingServer()函数中的代码是什么;为了扩展服务器上的会话,您可以向服务器发送一个类型为“HEAD”的简单ajax调用,而不会中断应用程序主流。它被视为服务器对会话的操作,因此重置/更新会话的超时。您不需要对代码中显示的服务器响应执行任何操作;只要您发送请求,会话超时将被重置/续订。
我希望这会有所帮助。我花了一段时间才完全拼凑起来。
答案 1 :(得分:0)