讨论:禁止用户二次登录的一个解决方法

winwang168 2004-08-27 02:43:45
在用户登录之后,以当前用户的 ID (唯一的)建立一个 Cache,它的超时时间为绝对时间 2分钟,在页面中增加一个隐藏页,每2分钟读取一下这个 Cache ,并将超时时间更新。
当有另一个以此用户进行登录时,先检查 Key 值为 ID 的存在与否,如果,存在,则说明,此用户已登录,此时,禁止用户登录系统,否则,相反之。


当用户 非法退出登出,(突然死机,断电等),则此用户必须在 <= 2分钟后方可进入。因,Cache将会在 <= 2 分钟后清空。

考虑到 Cache 是全局性,如果用户多,而且Cache内容过多的话,将会影响 服务器性能,则决定 Cache 中只存入用户的 ID,如果,同时在线人数少于 500 人的话,请各位讨论一下,
性能会不会有很大的降低,并,此解决方法是否可行,请赐教之
...全文
304 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
winwang168 2004-08-27
  • 打赏
  • 举报
回复
:(
晕,打错了
winwang168 2004-08-27
  • 打赏
  • 举报
回复

Cache 好像不是全局的吧?
非法退出怎么办呢?
nonepassby 2004-08-27
  • 打赏
  • 举报
回复
问题:
1.此Cache可能会和Session的过期时间相冲突
2.自动刷新页面并更新Cache的性能损毫

其实不用隐含页面刷新,只要cache记录在线用户列表,并给出一个退出功能
蓝海狙机 2004-08-27
  • 打赏
  • 举报
回复
好像都不够完美。如果能在服务器上做一个客户端的软件,实时检测服务器与访问用户间的通信状况,如果断开通信,客户端软件就从数据库中删除此ip地址的用户信息(在线人员记录,用户登录时记录用户ip地址及用户标识信息),这样的话服务器的负担会小很多。
以上仅为个人想法,未经测试,请多多指正!
tinghuyang 2004-08-27
  • 打赏
  • 举报
回复
up
SuperFC 2004-08-27
  • 打赏
  • 举报
回复
还是要将用户数据存入数据库比较好,然后在cookie失效的时候,更新对应的数据库条目。
fangbuge 2004-08-27
  • 打赏
  • 举报
回复
我一般是定义全局数组,在APPLICATION_start中进行初始化,SESSION_START中记录登录用户到全局数组中,SESSION_END清除该登录用户。
winwang168 2004-08-27
  • 打赏
  • 举报
回复
当用户 非法退出登出,(突然死机,断电等)。
如果出现这种情况,用 application 怎样解决,大家可否讲一下思路??????
redfoxhuang 2004-08-27
  • 打赏
  • 举报
回复
没有必要用这样的做法,application就可以了....
wangwanru 2004-08-27
  • 打赏
  • 举报
回复
楼主能否把源码贴出来,我在写一个用户在线管理的模块,无从下手,向楼主学习,关于在线管理能否发一份源码给我。
邮箱:wagnwanru81@yahoo.com.cn
leisang 2004-08-27
  • 打赏
  • 举报
回复
不是吧这么复杂?用老方法在Application里做个标记就行了。
wangwanru 2004-08-27
  • 打赏
  • 举报
回复
关注!帮顶!
winwang168 2004-08-27
  • 打赏
  • 举报
回复
数据库多加一个字段?可否讲一个思路?
在问一个,访问 Cache 与 访问数据库,哪个更快一些?
rickjelly2004 2004-08-27
  • 打赏
  • 举报
回复
数据库多加一个字段

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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