繁体   English   中英

会话超时后如何在Java Web应用程序中的服务器上自动注销

[英]How to logout automatically after session timeout on server in java web application

我有一个小型Web应用程序,其简单要求是:我的应用程序中有一个servlet和几个JSP页面。 每当我们向sevrlet发送请求时,它将在服务器上以会话超时1分钟开始会话,然后显示一个JSP页面。 服务器上的会话超时后,我想在浏览器中自动显示退出JSP页面,我们如何实现这一点。

添加到Jhash

  1. 您必须在应用程序的每个jsp上都具有计时器javascript函数(您可以将其保存在.js文件中并包含它)
  2. 您在服务器上的会话大约需要30分钟,而JavaScript计时器大约需要2到5分钟,因为即使显示了缓存的html页面,它也会在2分钟内找出情况
  3. 希望您不要依靠此来保护应用程序。 在允许用户使用您的应用程序之前,您仍然应该在服务器端检查用户会话是否有效(JavaScript只是为了方便起见)

编辑:在JS中猜测超时然后将用户导航出去的示例:

var lastActiveTimeMs = new Date().getTime(); //This is set to current time on page load
var SESSION_TIMEOUT_MILLIS = 35*60*1000; //35 mins in milliseconds
var CHECK_TIME_MILLIS = 60*1000; //1 mins in milliseconds

setTimeout(fnCheckTimeout, CHECK_TIME_MILLIS); //Check the timeout once in a minute
function fnCheckTimeout(){
  var curMs = new Date().getTime();
  if( (curMs-lastActiveTimeMs)>SESSION_TIMEOUT_MILLIS ){
    window.location.href = 'signout.html';
  }
}

//Keep updating lastActiveTime every time you do an Ajax call. 
//Because server will keep extending the session for every page load or ajax call from client

为此,您需要在jsp页面中使用javascript。 例如,如果您在服务器上的会话超时为2分钟,则在JSP页面中,您还需要使用javascript创建一个具有相同时间的计时器,当javascript定时器超时发生后,您只需要使用相同的javascript代码刷新页面即可。 因此,当您刷新页面会话超时时,服务器上已经发生过会话超时,因此您可以检查服务器上的会话,以及会话是否过期,将控制重定向到所需的页面。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM