以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]请高手们提供一个限制用户登录的思路?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=38673)

--  作者:智友软件工作室
--  发布时间:2013/8/4 0:56:00
--  [求助]请高手们提供一个限制用户登录的思路?
用户数据采用远程存储,现在想实现某一个用户名在一台电脑上登录之后,该用户名就不能在本机和其他计算机上再次登录了,直到该用户下线之后其他电脑才能登陆这个用户名呢?请高手们提供个思路?先谢谢了。
--  作者:lsy
--  发布时间:2013/8/4 6:46:00
--  

第一种思路:

用户权限表里,设一逻辑列:是否在线。

默认为False。

用户每次登录,除了检查用户名和密码,还检查是否在线的状态。

是否在线为True,,返回,拒绝登录;反之,正常登录。

每次登录成功,将是否在线更新为True。

每次退出成功,将是否在线更新为False。

缺点:如果程序意外退出,状态会停留在True的状态,用户再也无法正常登录,需管理员人工干预。

 

第二种思路:

用户权限表里,设一时间列:在线时间。

做个计划:

用户登录后,程序以较短的时间间隔,不断更新在线时间。

用户每次登录,计算,点击确定按钮时的时间,减去在线时间里的时间。

这个差值大于计划规定的时间间隔,说明此前,该用户不在线,正常登录;反之拒绝登录。

 

缺点:系统开销较大。

 


--  作者:瞩望星空
--  发布时间:2013/8/4 22:23:00
--  

本人觉得,用户数量不太大的话,还是第二种方法好。如果系统销太大,就通过延长刷新在线时间的方法来调节。

单位里有一个程序,采用的是第一种方法,在实际使用时,会遇到很大问题。


--  作者:blackzhu
--  发布时间:2013/8/5 7:55:00
--  
2楼的做法 正确.
--  作者:智友软件工作室
--  发布时间:2013/8/5 10:15:00
--  
第一种方法我也想到过,但是就是不知道能否有解决异常退出的办法?
不知道第二种办法是不是确认的最优解决方式?

--  作者:客家阿哥
--  发布时间:2013/8/5 12:26:00
--  
第一种方法用管理员就去干预一下不就行了!

应该可以两种方法相结合!时间和人工都可以干预,那样时间可以设置长一点,非正常退出的时候,要及时登陆,时间干预又不起作用的时候,实行人工干预!