1

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

如果它发生在同一台机器上,那么我们需要对用户会话做一些事情,但它也应该防止他们使用相同的用户名和密码在不同的机器上登录。

什么是最好的方法:-

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

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

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

1) 如果用户在没有注销的情况下关闭浏览器。

2) 如果会话超时。

希望它能解决这个问题。

4

2 回答 2

0

只需在数据库中有一个字段,其中包含每个用户的在线或离线文本,根据他们是否登录。因此,当有人尝试使用该用户名登录时,请检查数据库,如果该字段在提交时显示该给定用户的在线。如果字段显示在线,则不允许登录。否则允许。

如果用户在线,您可以在不使用数据库的情况下将其 存储在文本文件中

$check= "onlineCheck.txt";
$fh = fopen($check, 'a') or die("can't open file");
$nowOnline= "USER678 \n";
fwrite($fh, $nowOnline);
于 2013-08-31T17:33:53.277 回答
0

Besdies 数据库命中(如果您的服务器在没有更新 db 的情况下关闭,这可能会失败):对数据库友好的方法是不要在每次重新登录时都命中数据库,否则您可能会受到拒绝服务攻击,从而使您陷入困境。而是在 J2EE 中实现一个会话侦听器,并通过在缓存中查找用户 ID 来检查同一用户是否已登录。

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

于 2013-08-31T17:37:22.200 回答