1

我已经创建了动态 Web 应用程序。有一个带有 ENABLED 列的 USER 表来检查用户是否已经登录:

  • ENABLED = true --> 登录,否则不登录
  • 如果我登录了,我不能同时在另一个浏览器中登录
  • 但是如果我登录并关闭浏览器,我该如何处理进一步的登录?
4

2 回答 2

0

通常你会指定一个会话超时,(即 10 分钟),这意味着会话将在最后一次连接后存活 10 分钟。

也许您可以将启用的列更改为存储会话到期时间的日期时间列,该列应在用户发出的每个请求中更新。

在此过期时间之前完成的任何登录请求都应返回错误,但超过此过期时间的登录请求可能会成功。

希望能帮助到你。

于 2012-11-24T14:35:31.683 回答
0

除非您需要登录历史记录,否则您无需保留登录启用列来维护用户会话。以下是实现目标的步骤。

  1. 用户打开登录页面并首次登录,将登录信息保存在会话映射中。
  2. 当他们注销时,清除会话映射或使会话无效(httpSession.invalidate(); userSessionMap.remove(userName);
  3. 如果用户已经登录并尝试从其他浏览器,请检查会话映射并向他们发出警告“您已经登录,是否要从其他位置注销?”
  4. 对于 3,如果说是,则使先前的会话无效并创建新的登录
  5. 保持会话超时
  6. 如果他们关闭浏览器而无需注销,下一个登录页面将提示与第 3 点中提到的相同的警告消息,因为每次都会创建一个新会话。

而已。希望你能实施。

于 2012-11-24T18:01:46.847 回答