我已将WebSphere中的会话超时设置为3分钟(考虑。我设置的实际超时为30分钟)。我保持应用程序打开,只是将鼠标移到J2EE应用程序上并进行一些不会发生的按键操作提交任何页面。即使在3分钟后,应用程序的会话仍然保留。我需要确认当某些鼠标移动/按键发生时如何保留会话?没有请求发送到服务器或没有提交页面提交。
我的应用程序的会话超时仅在服务器中维护。
感谢。
答案 0 :(得分:1)
这听起来像是因为WebSphere使用LTPA令牌进行身份验证。总结:
来自http://www-01.ibm.com/support/docview.wss?uid=swg21078845:
问题3
我想强制我的用户在设置“不活动超时”时间后重新登录。 WebSphere Application Server应该如何处理会话超时和LTPA超时。
回答3
在以下developerworks文章的第9项中查看此问题的答案: http://www.ibm.com/developerworks/websphere/techjournal/1003_botzum/1003_botzum.html
通过该链接,您将了解到:
9-我想强制我的用户在设置“不活动超时”时间后再次登录。 WebSphere Application Server应该如何处理会话超时和LTPA超时?
WebSphere Application Server LTPA令牌基于登录会话的生命周期而不是基于不活动而到期。因此,如果用户在一段时间内未执行任何操作,那么WebSphere Application Server登录会话将不会过期。但是,HTTPSession会根据不活动状态到期。如果在您的应用程序中您需要使用基于空闲的应用程序到期,则必须在应用程序中明确地对其进行编码。您可以捕获用户到达过期会话(实际上是新会话)并强制他们再次登录(如果您认为有必要)。请记住,这样做会破坏跨应用程序的单点登录。
第二种方法是第一种方法略有变化,即使用HTTPSession.getLastAccessTime()来计算上次客户端请求何时发生。如果时间过去太远,您当然可以通过访问并强制进行新的身份验证。 通过使用servlet过滤器,可以使这些方法中的任何一种对应用程序代码透明。
应该注意,IBMTivoli®AccessManager提供基于生命周期和空闲的身份验证会话超时。
用户经常会问为什么WebSphere Application Server以这种方式工作。为什么不能超时空闲登录会话?原因是WebSphere Application Server基本上是一个松散耦合的分布式系统。参与SSO域的应用程序服务器不需要相互通信。他们甚至不必在同一个牢房里。因此,如果要限制LTPA令牌(也称为SSO令牌)的空闲生存期,则必须使用每个请求的最后一次使用时间更新令牌本身(或者可能是在一分钟间隔期间看到的第一个请求)。这意味着令牌本身会经常更改(意味着浏览器会经常接受新的cookie),并且当看到验证它时,WebSphere Application Server必须解密并验证入站令牌。这可能很昂贵(今天的WebSphere Application Server仅在每个应用程序服务器上首次使用时验证令牌)。通过巧妙的缓存等解决这些问题并非不可能,但这不是WebSphere Application Server今天的工作方式。