java - 防止使用相同的登录凭据进行多次登录

标签 java session servlets servlet-filters servlet-listeners

我正在开发一个 Web 应用程序,需要防止同时使用相同的用户名和密码进行多次登录。

如果它发生在同一台计算机上,那么我们需要对用户 session 执行一些操作,但它也应该防止他们使用相同的用户名和密码登录不同的计算机。

最好的方法是什么:-

1)我应该将用户 session 、凭据和计算机的 IP 地址存储在数据库中吗?

2)我们是否应该在应用程序本身中使用 session 跟踪机制。如果是,最好的方法是什么?

此外,我们必须牢记以下几点:

1) 如果用户关闭浏览器而不注销。

2) 如果 session 超时。

希望它能解决这个问题。

最佳答案

Besdies 数据库命中(如果您的服务器在没有更新数据库的情况下崩溃,则可能会失败):数据库友好的方法是不要在每次重新登录时都命中数据库,否则您可能会受到拒绝服务攻击,导致您失败。相反,在 J2EE 中实现 session 监听器,并通过在缓存中查找用户 ID 来检查同一用户是否已登录。

如果您有多个应用程序节点,则需要一个分布式缓存,其超时时间与 web.xml 中的 session 超时时间相同。

关于java - 防止使用相同的登录凭据进行多次登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18550914/

相关文章:

java - 加密代码

session - 在 Lift Scala 中存储 session 变量

javascript - Nodejs express4 - 未定义的 session

java - 不同 Web 模块的根上下文

java - 金钱累积按钮

java - 删除优先级队列的尾元素

java - 为什么我的应用程序没有注册到 Eureka 服务器?

PHP session *并不总是*有效

java - 可以使用 Java 类追加到文件,但不能使用 Java Servlet

java - 如何从非组件类中使用 OSGI 服务