关于同一帐号禁止多人同时登陆的问题

lxings 2007-05-27 02:39:32
要求如果一个已经在一台机器上登录了,其他机器上就不能登录
目前的做法是在数据表中用一个字段记录登陆状态,比如0代表没登陆,1代表登陆,任何帐号登陆是都判断一下。
问题是无法保证用户意外退出的时候及时更改状态,请各位高手给点意见。
...全文
4836 75 打赏 收藏 转发到动态 举报
写回复
用AI写文章
75 条回复
切换为时间正序
请发表友善的回复…
发表回复
535cheng110 2008-09-09
  • 打赏
  • 举报
回复
xuexi
steden 2007-06-28
  • 打赏
  • 举报
回复
补。因为是自动编号,所以不可能有同样的“application("user_"+rs["id"])
或:session("user_id")
steden 2007-06-28
  • 打赏
  • 举报
回复
关于突然断电的情况。我有一个方法,不知道OK不OK。。
一个专门表。记录在线用户的。。。表有个自自动编号ID。
当登陆的时候。。session("user_id")=rs["id"]
这个是用来保存用户表中ID的。。
同时用application保存所有ID。为什么?呆会会讲到。
application("user_"+rs["id"])=rs["id"]

当有另外一个客户登陆的时候。
先判断当前表中有没有此客户存在。如果存在。则删除客户的信息。
重建新客户的信息。
删除表中的同时。也删除客户application("user_"+rs["id"])的信息。
=====================================================

这样只要所有用户在活动的时候。都进行一个简单的判断。
if(session("user_id")!=application("user_"+rs["id"]))
MessageBox.Show("在别处已登陆了你的帐号!")

不知道这种方法如何?
wutao1139 2007-06-25
  • 打赏
  • 举报
回复
MARK
luffy927 2007-06-25
  • 打赏
  • 举报
回复
mark,收藏下....
胖胖的洋葱 2007-06-06
  • 打赏
  • 举报
回复
如果你用的是SQL
那么...SQL的全局临时表可以解决这个问题
每当用户登陆.就以用户ID为表号..建一个全局临时表!~用户退出,你就删除这个临时表
不用担心这个临时表,因为当用户断开连接的时候
SQL会自动回收这个临时表!
所以断电啊.意外什么的.也都没问题!~
ChenJIanCHE 2007-06-05
  • 打赏
  • 举报
回复
同意 zmy12007() 老兄的意见~
使用ajax 定时向服务器提交在线验证,服务器将用户的验证信息存在静态的HashTable里
Key存用户的唯一标识比如用户名之类的,value存用户提交验证的时间。
服务器端使用一条线程每隔一段时间扫描一次HashTable如果将超时的用户删除。
用户在登陆的时候也向服务器请求此用户是否已登陆,直接向HashTable查一下就行了。
这样做的好处就是不管用户是否正常退出服务器都能将超时的用户清除。
缺点就是开销有点大如果登陆的用户比较少还可以,太多了就不好说了没测试过。
我们公司在项目中都是这样解决的。
连云港麦内哲 2007-06-04
  • 打赏
  • 举报
回复
在数据库中设置一个登陆状态的属性,
每次登陆就设置成1,退出改回成0就可以了
这样就比较简单了
tanjun132 2007-06-03
  • 打赏
  • 举报
回复
mark
eaglewu 2007-06-02
  • 打赏
  • 举报
回复
学习一下……
z8h8a8ng 2007-06-02
  • 打赏
  • 举报
回复
我也想学习一下
zmy12007 2007-06-02
  • 打赏
  • 举报
回复
问题是无法保证用户意外退出的时候及时更改状态
用ajax异步调用,在客户端定期发出请求,然后服务器在每次请求时记下服务器时间,当登入登入时只要比较当前服务器时间与最近更新记录下来的时间的间隔是否超过设定请求时间时间间隔,如果超过了就表明不在线不管意外与否,在此之内就表示在线拒绝登入
vingnet 2007-06-02
  • 打赏
  • 举报
回复
Good
waslee 2007-06-01
  • 打赏
  • 举报
回复
MAKE
gtod 2007-05-30
  • 打赏
  • 举报
回复
学习一下
XShenWJ 2007-05-29
  • 打赏
  • 举报
回复
收藏...以写winform用一个timer,每过一段时间进行检查的,asp.net不知道能不能用.
wopos 2007-05-29
  • 打赏
  • 举报
回复
mark 2
hcx_2008 2007-05-29
  • 打赏
  • 举报
回复
希望看到java的解决方案..包括application和数据库两种
eyuannet 2007-05-29
  • 打赏
  • 举报
回复
mark
wangwang1103 2007-05-29
  • 打赏
  • 举报
回复
mark
加载更多回复(54)

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧