代码改变世界

同一用户最新登录踢掉历史登录【原创】

2009-06-09 16:03  hailibu  阅读(4489)  评论(36编辑  收藏  举报

前一段在开发一个项目中,需求人员希望能防止同一个用户在同一时间多次登录系统。于是在我们博客园里搜索相关文章,发现解决方案几乎都是千篇一律。见 防止用户多次登录

这种方案个人觉得有两点不足之处:

1、频繁与服务器交互

2、只要用户已登录,就不能再次登录了

我们知道在一台机子上登录QQ后,再到另外一台机子上同样也是可以登录的,不过之前登录的会被 踢掉。我觉得这种方案比较人性化。如果在家里登录QQ后,忘了退出,然后在公司登录时提示“此用户已经登录”,不知你会有何感受?!

解决方法:

1、 用户登录系统时,分配一个GUID给他。如果是用户是首次登录就往Application["OnlineUserList"]中添加一条记录,下次再登录,系统会重新分配一个新GUID,修改已存在的记录值。

2、页面继承基类中,判断客户端保存的cookie["UserOnlineID"] 值是否与服务端一致,如果不一致,则重定向到重复登录页面。

登录成功时处理

 

页面继承基类

 

 Hope this helps