ASP.NET学习社区

首页 » ASP.NET学习区 » 有问有答 » 请教如何能够避免用户重复登录阿
gengyong1202 - 2008-6-6 8:36:00
如题,请教如何能够避免用户重复登录阿?
asp.net - 2008-6-6 10:02:00
判断用户已经登陆,则禁止其登陆啊
suresy - 2008-6-6 11:23:00
我的做法是在全局区开一个表记录所有已登陆用户的ID,每次登陆时检查表里是否已存在相同ID,成功则向表添加用户ID,每次用户退出或会话结束就删除表里相应的ID记录。
这种方法还存在很多漏洞,现在还在改进中,高手们给点意见吧
aspx1 - 2008-6-7 5:21:00
你说的 全局区,是指 cache?
suresy - 2008-6-7 16:12:00
application或cache,我刚开始弄这个,全局数据一般放在这两个地方,所以都统一叫全局区了,不过我就担心放在这两个地方不知安全不,因为是全员共享的
追づ风 - 2008-6-7 19:44:00
application占用资源太大,cache有时不太容易维护,还是用session最好~
suresy - 2008-6-7 23:43:00
session好像只能为一个用户保存信息吧,而且用户一旦关闭浏览器或超时session信息就清空了,不适合拿来保存全员共享而且长期有效的信息吧
hawking3000 - 2008-6-8 0:08:00
这个话题值得探讨。。
asp.net - 2008-6-8 4:32:00
全员共享的还是用cache好了,至于安全性方面应该没问题,毕竟他实质上是内存中的一块区域,如果有人能直接读你内存的数据,那应该就不是cache的安全性问题,而属于其他方面的安全没做好了。当然用cache必须防止cache区域被回收的问题。

application可以当作cache用,不过有点杀鸡用牛刀的感觉。
session 只能存储当前单个用户的信息,因为他实质上是和客户断的cookie一一绑定的。
wheasy - 2008-8-1 14:35:00
在在用户表里加个字段lock,用户登陆后设置为1,session结束时设置为0
suresy - 2008-8-1 17:38:00
LS的做法会增加数据库负担的......
我最近又开始研究这个问题,有一个麻烦就是当用户通过关闭浏览器离开时不能及时更新列表(要等session过期),如果用户在上一次会话过期前再登陆就会失败。
目前比较好的方法就是设置比较短的会话有效期,然后用XMLHttp定期刷新,减小用户关闭浏览器和更新列表的时差
aspx1 - 2008-8-2 7:44:00
LS是什么意思?
suresy - 2008-8-2 10:47:00
楼上......
1
查看完整版本: 请教如何能够避免用户重复登录阿