我正在研究我的最后一年项目,这是一个基于网络的应用程序。我想在该项目中实现注销功能。但不知道该怎么做。此外,我想实现自动注销功能,即在特定时间段之后,如果他/她在此期间没有执行任何操作,则在20分钟后将自动注销。应向用户显示一条消息“抱歉,您的会话已过期请再次登录”。怎么做?
答案 0 :(得分:2)
您可以使用session.invalidate()
(或servlet中的response.getSession().invalidate()
)
如果使用Cookie,您必须使用生命周期为负的Cookie致电response.addCookie(..)
。
可以通过设置会话超时来实现自动注销。在web.xml
<session-config>
<session-timeout>20</session-timeout>
</session-config>
答案 1 :(得分:0)
您是如何处理登录和会话的?如果它像会话cookie一样简单,你只需要过期/删除cookie即可注销
答案 2 :(得分:0)
我在CMS上执行此操作的方法是在页面加载时启动setTimeout。这 - 在20分钟后将用户重定向到清除会话的页面,从而将用户注销。不幸的是,这有一个副作用,当用户打开多个窗口时,有时一个窗口可以在用户活动之前达到超时时间。这会导致会话过早超时,并且会中断流程。
解决此问题的一种方法是为用户执行的每个操作保留活动ID(即创建内容项,上传图像)。此活动ID保存在用户表中,超时计时器(在Javascript中)可以检查此ID,以查看超时的窗口是否是最近活动的窗口。如果该窗口中的ID(从PHP变量传递到HTML输出)不匹配,则它不会强制会话超时。
在不对界面进行重大更改的情况下,这是一个非常棘手的方法。