首页 新闻 会员 周边

账户 安全 和 排斥性

1
悬赏园豆:100 [已解决问题] 解决于 2011-08-22 13:36

网站开发。遇到的问题:

 一个账户 ACCOUNT1 登陆后,在另外一个地方,同一个账户ACCOUNT1又登陆,则前一个要被登出。怎么实现这个功能。就是说同一个账户只能有一个在线。如果在其他地方,在登录,则当前账户登出。。就像QQ一样。。

  怎么实现呢?

doo的主页 doo | 初学一级 | 园豆:8
提问于:2011-07-13 11:33
< >
分享
最佳答案
-1

鹤冲天正解。

果严密性要求非常高的话,比如说金融系统或者订票系统等,可能还需要在用户表中追加一个时间戳列或者rowversion列,每次登陆后更新完最后登陆时间后,拿到时间戳扔到session中,以后拿时间戳来比较。这样可保绝对的没问题。毕竟时间还有个精确度的问题,如果是sql server的话大概是3.3333333...毫秒,在理论上还有多个用户取到同一时间的可能。

收获园豆:100
刘鸿海 | 小虾三级 |园豆:655 | 2011-07-21 09:36
其他回答(5)
0

使用Cookie 对象实现

简单&平凡 | 园豆:205 (菜鸟二级) | 2011-07-13 12:39
0

用户登陆成功后,将登陆时间保存两份:一份存入数据库,一份存入登录用户的 Session(或 Cookie)。

用户访问页面时(登陆页面除外),对比这两个时间,如果不相等(一般是 Session 或 Cookie 中的时间早于 数据库中的时间),说明已在其它地方登陆。

可如下将当前用户踢出:

 

Session.Abandon();
FormsAuthentication.SignOut();
鹤冲天 | 园豆:2379 (老鸟四级) | 2011-07-13 12:53
我一般把登陆时间合并在用户表中,列名叫:LastLoginSuccessTime,即最后一次登陆成功时间。
支持(0) 反对(0) 鹤冲天 | 园豆:2379 (老鸟四级) | 2011-07-13 12:57
0

 用缓存实现,Cookie保存在客户端的实现不了

都市浪子 | 园豆:205 (菜鸟二级) | 2011-07-15 17:36
0

怎么会有这种需求?

顾晓北 | 园豆:10844 (专家六级) | 2011-07-17 12:48
0

在数据库中添加一个登录状态字段,如果登录判断登录状态是不是已登录,是的话就提示啊

都有 | 园豆:175 (初学一级) | 2011-08-10 15:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册