日期:2014-05-18  浏览次数:20402 次

求思路,单用户登陆的问题
我希望达到的效果是一台电脑上只有一个账号可以登录,a登录了,b、c、d,包括a自己就都不能登录了
但是a、b、c、d账号都可以在别的电脑上登录,这个应该怎么实现

孟子的那个单点登录测试是a登录了,a就不能再登录,但是b、c、d都还可以登录

------解决方案--------------------
网上很多单用户登陆的例子。只需要修改下条件,往数据库插的时候,机器名+用户名 就可以了
------解决方案--------------------
连带本机标识一起登录,只要标识没有过期或消除就不能再登录
------解决方案--------------------
cookies不行,可以绕过的。
------解决方案--------------------
探讨

网上很多单用户登陆的例子。只需要修改下条件,往数据库插的时候,机器名+用户名 就可以了

------解决方案--------------------
不好弄

浏览器中的cookie不是互通的
用cookie不行的

如把mac地址保存到 Application 去验证
mac地址在非ie浏览器里获取不到


------解决方案--------------------
a登录了,b、c、d,包括a自己就都不能登录了
但是a、b、c、d账号都可以在别的电脑上登录

看了您的描述我感觉,前后冲突
a登录了,但是a账号可以在别的电脑上登录
也就是说,不限之a的登录次数
而是限制,机器登录次数
这样的话,您需要插件配合,光浏览器恐怕不行
可以用个pfx证书什么的
------解决方案--------------------
探讨
a登录了,b、c、d,包括a自己就都不能登录了
但是a、b、c、d账号都可以在别的电脑上登录

看了您的描述我感觉,前后冲突
a登录了,但是a账号可以在别的电脑上登录
也就是说,不限之a的登录次数
而是限制,机器登录次数
这样的话,您需要插件配合,光浏览器恐怕不行
可以用个pfx证书什么的

------解决方案--------------------
思路:就算不同客户端也能实现单用户登录。
1.在用户表中建立状态,包含最后登录时间,精确到毫秒。
2.把登录的用户信息放在缓存中。
3.Session过期时,将缓存清空。
4.在用户登录后,在页面用ajax与服务器实时连接(时间间隔由你定,每次连接上更新的你缓存数据)
5.服务器中:开个线程。更新你的缓存数据。如果发现这个用户有5分钟没有使用ajax更新缓存的话,你在更新数据库。并且标识该用户不在线了。

这个方式的特点:
1.达到需求目的
2.CPU和内存都会飚升的。你的服务器一定要好。