2010-03-31 101 views
0

我正在研究我的最后一年项目,这是一个基于Web的应用程序。我想在该项目中实现注销功能。但不知道该怎么做。此外,我还想实现自动注销功能,即在20分钟后的特定时间段后,如果用户在此期间未执行任何操作,用户将自动注销。应向用户显示一条消息“对不起,您的会话已过期请重新登录”。怎么做?实现注销功能

+0

如何注销取决于您如何进行登录。你应该详细说明登录。 – BalusC 2010-03-31 14:00:06

回答

0

你是如何处理登录和会话的?如果其作为简单的会话cookie你只是到期/删除cookie注销

2

你可以(在servlet或response.getSession().invalidate())使用session.invalidate()

如果使用cookie注销,你将不得不调用response.addCookie(..)与您的曲奇负寿命。

自动注销可以通过设置会话超时来实现。在web.xml

<session-config> 
     <session-timeout>20</session-timeout> 
</session-config> 
0

我这样做是我们的CMS上的方法是有一个的setTimeout在网页加载时开始。这 - 在20分钟后将用户重定向到清除会话的页面,并因此将用户登出。不幸的是,这有一个副作用,即当用户打开多个窗口时,有时一个窗口可能会在用户激活之前达到超时期限。这会导致会话提前超时并中断流程。

解决此问题的一种方法是为用户执行的每个操作(即创建内容项目,上传图像)保留活动ID。此活动标识保存在用户表中,并且超时计时器(使用Javascript)可以检查此标识以查看超时窗口是否为最近活动的窗口。如果该窗口中的ID(从PHP变量传递到HTML输出中)不匹配,则不会强制会话超时。

这是一个相当棘手的方法,而不会引入对接口的重大更改。