即像QQ一样只允许一个账号登陆,如果别人在其他地方登陆了就会把这个已经登陆了的用户挤下线!求解决
服务器收到新的登陆请求后发一个信号给之前已登陆的客户端让它下线呀,而且新地方登陆后,旧地方的所有请求都不处理就行了。
原理是这么个就是 如何使已经登陆的用户下线怎么获取它登陆的全局信息,使它的信息失效
@IT_小子:
它当时登陆就已经在服务器上注册了呀,怎么会没有信息???失不失效是服务器说了算,不是它说了算。
你这是单点登录,他要的是一个用户只允许在一个客户端上登录,牛头对上了马嘴,呵呵。
@爱编程的大叔:没看清
@爱编程的大叔: 有道理
挺麻烦的,你得先说下你是什么环境?
WEB?/WINFORM?
Web
@IT_小子: 要求不高的话,就等用户请求页面的时候判断,让他下线。要求高的话就得麻烦点,
得引入长连接通信机制之类的。
我只说原理吧,至于你能不能实现,我就不评判了。
1、登录用户,用户表中弄几个字段,记录一个TOKEN。
2、页面请求时,判断用户TOKEN是否与数据库中的用户TOKEN一致,不一致则踢出。
@爱编程的大叔: 你参考下这个 我用了这个实现不了http://www.cnblogs.com/xlhblogs/archive/2012/03/29/2422804.html
@爱编程的大叔: hOnline[strKey] = "XXXXXX";把已经登陆的键值修改了但是OnInit事件里面的idE.Value.ToString()取出来的还是我给的UserID
@IT_小子: 你要用Application变量当然也是可以的,实现不了,那是你不会用。
只能要求你多练习了,我也没有办法代替你学习。
@爱编程的大叔: 汗
如果是控制一个帐号只能在一个地方登录,可以使用token机制,每次登录的时候检查一下该帐号是否存在有效的token,如果有的话说明在其他的地方已经登录了。但如果要实现qq的那种顶下去的效果,一楼的方案可行