Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 防止使用相同用户Id多次登录_Vb.net - Fatal编程技术网

Vb.net 防止使用相同用户Id多次登录

Vb.net 防止使用相同用户Id多次登录,vb.net,Vb.net,我必须实现会话来存储用户id,但在那之后,我意识到这只适用于单个浏览器,而不适用于不同的浏览器。我认为会话存储在浏览器中。你们有什么想法来实现这一点吗?我这样做的方式是记录用户登录和退出程序/网站的日期/时间,例如: --------------------------------------------------- | username | lastLoggedIn | lastLoggedOut ------------------------------------------

我必须实现会话来存储用户id,但在那之后,我意识到这只适用于单个浏览器,而不适用于不同的浏览器。我认为会话存储在浏览器中。你们有什么想法来实现这一点吗?

我这样做的方式是记录用户登录和退出程序/网站的日期/时间,例如:

---------------------------------------------------
| username | lastLoggedIn      | lastLoggedOut
---------------------------------------------------
| Joe      | 06/05/2015, 17:12 | 06/06/2015, 17:16
---------------------------------------------------
| Bob      | 04/05/2015, 19:16 | 04/05/2015, 20:21
然后,我的代码将
lastLoggedIn
条目与
lastLoggedOut
条目进行比较;如果
lastLoggedOut
条目早于
lastLoggedIn
条目,则用户仍在登录,我们可以阻止他们再次登录

为了验证这一点,我们需要比较这两个条目,首先将它们分成单独的
Date
Time
变量,然后处理给定的值

正如问题的作者所指出的那样:

如果用户只需关闭浏览器而不注销怎么办 首先

这种情况处理起来有点棘手,但仍然是可行的。对于VB.NET,我不确定,但是对于C,您可以使用
onbeforeuload
捕获浏览器关闭事件。 如果您使用的是HTTP Keep-Alive(),只需扫描并发服务器连接以查找IP;如果未找到,则更新用户的
lastLoggedOut
字段

如果用户登录时web服务器崩溃怎么办

虽然希望您已经对web应用程序进行了编程,这样就不会发生这种情况,但崩溃或断电随时可能发生。这意味着用户仍将被列为已登录数据库。 要解决这一问题,只需在web应用程序启动时添加一个检查,以检查仍列为已登录的用户;然后,您可以通过将条目替换为有效条目来“注销”


为了完成此操作,您可能还希望将系统“修复”的成员转储到一个文件中,这样,如果其中任何成员有进一步的问题,您就可以进行审计跟踪。

实际上,我已经实现了类似的功能。用户关闭浏览器和会话超时时如何?如何存储上次注销的日志?@wksl这种情况有点棘手,您使用的是HTTP Keep Alive吗?如果是这样,请检查用户IP地址的并发连接,如果找不到他们的IP地址,则以这种方式将其注销。您也可以在没有HTTP保持活动的情况下执行此操作,但我感觉它需要WMI,而且由于WMI像没有明天一样消耗系统资源,我不推荐使用它。我不使用HTTP保持活动。这个问题困扰了我两周,我一直在努力寻找解决方案。@wksl更新了答案。@wksl如果您能查看编辑并给出反馈,我将不胜感激。