我正在开发一个Web应用程序,其中我使用会话管理来存储一些值。
我要找的是,在用户通过提供用户名和密码登录应用程序后,他/她将在主页上,但是如果用户关闭浏览器窗口或按下后退按钮,会话应该失效,用户不应该再次获得主页。
我使用servlet作为登录(jsp)和2个jsp页面的控制器,第1个登录页面,第2个主页。
对于超时,我使用的是web.xml的<session-timeout>
功能。
答案 0 :(得分:2)
在IE JSP
上按下后退按钮时会话无效
其他浏览器怎么样?世界上有更多的浏览器,而不仅仅是IE浏览器。
无论如何,你正朝着解决“问题”的方向走错路。当用户按下后退按钮时,技术上不可能使会话无效。此外,我不确定你通常如何在网上浏览,但我很确定按下后退按钮使会话无效会使普通网页访问者感到惊讶。
如果您的具体问题是您希望阻止最终用户查看需要在按下后退按钮后登录的受限页面,那么您需要告诉浏览器不要缓存这些页面。这在这里详细解答:Prevent user from seeing previously visited secured page after logout
当用户在物理上关闭浏览器时也会使会话无效,这在技术上也是不可靠的。常见的方法是仅保持会话超时相对较短,例如1分钟,并引入一个ajax轮询,每隔55秒左右向服务器发送一个请求以保持会话处于活动状态。这在这里详细解答:JSF - Keep a session alive for an indefinite amount of time