避免在Web应用程序中进行多次登录

时间:2010-11-18 10:57:41

标签: java struts2

网站正在自动刷新。当用户使用已登录的用户名登录时,如何注销以前的登录?如何在第一个浏览器窗口中提供重新登录页面?

  Please provide some code snippets....


   Thanks in advance....

1 个答案:

答案 0 :(得分:2)

This帖子正在处理类似的问题。

如果没有指定更多细节,很难正确回答您的问题。首先,如果用户在同一浏览器中打开另一个选项卡或窗口,他们仍将使用之前的登录名登录。这是正常行为。

如果用户使用其他浏览器登录,则可以执行以下操作:

  1. 注册HttpSessionListener
  2. 使用void sessionCreated(HttpSessionEvent se)创建会话时,检查用户的凭据和会话ID是否在您的数据库中
  3. 如果没有,请将它们放在数据库表中
  4. 如果是,则通过删除数据库中的先前凭据
  5. 使其先前的会话无效
  6. 会话被销毁时,使用void sessionDestroyed(HttpSessionEvent se)删除数据库中的用户凭据
  7. 另一件事。如果您打算使用这种方法,那么如果您的用户凭据存储在数据库中,则必须检查每个浏览器请求。您可以使用Servlet filter。当然,这将是一个开销。

    还有一件事。如果会话创建/销毁代码中存在异常,则存在用户凭据未在数据库中正确处理的危险。您可以使用数据库触发器来处理此操作,以删除与会话超时一样长的行。