我正在开发一个 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/