在winform程序下,如果想避免重复登陆,可以在登陆的时候判断一下,如果此用户已经登陆,则拒绝登陆。
判断这个用户是否已经登陆了,每个用户登陆成功时都在数据库中记录一条信息。比如xxx在某时间登陆了。这样,当其他用户登陆时,先查询数据库,看看这个用户是否已经登陆。。这样做的缺点是:如果一个用户在退出的时候没有通过正常途径,比如直接关机,这样的话数据库中登陆信息没有删除,这样的话他就永远无法登陆了,除非手工清除数据库中的记录。
请问该如何解决呢?

解决方案 »

  1.   

    如果客户端直接连接数据库,可以让客户端定时更新登陆的最后时间,其它用户登陆时判断里面保存的纪录是否超时,超时就说明他已经退出如果客户端连接的是服务器端程序,可以将登陆用户,登陆时间记录在一个hashtable里面,客户端定时更新hashtable中的登陆时间,这样就避免了频繁访问数据库,服务器端定时遍历hashtable,如果超时的就删除掉
      

  2.   

    请问pupo(泡泡):我的程序直接连接的是数据库,所以应该用第一种方法实现,现在我可以在用户信息里添加一个字段,记录一下定时更新的时间,如果用户第二次登陆的时候,查找这个字段的值,如果发现超过这个定的时间,就说明超时这个用户已经退出了,就可以重新登陆了,是吗?