一个用户同时只能在一台机子上登陆!
当一个用户已经在某台机子上登陆了以后,该用户再不能在任何机子上登陆,只有等关闭后才能登陆。谢谢高手了。在线等待
------解决方案--------------------
------解决方案--------------------前两天这里就讨论了这个问题,你到这找找.
------解决方案--------------------建立一个服务,当用户登录某台机器时,验证该用户已在别的地方登录,如果登录了就禁止这次登录,没有的话记录用户id和机器id。
------解决方案--------------------1.不是很明白你要答道的目的,用户登陆的机器是否受你的限制?也就是说用户登陆机器是否都是你锁提供的机器
2.如果是 目前我们解决的办法又两种:
(1)写cookis,无论用户登陆哪台机器他使用的那台机器的cookis我们可以写入相关信息,这样每次用户登陆时拿到cookies登陆的标识 判断用户是否已经登陆
(2) 1是有不好的地方的,不是每个用户的机器都会开写cookies的权限,所以也可以利用数据库来管理登陆,无论哪台机器公用一个用户数据库表,可以得到用户的登陆
情况。
------解决方案--------------------用户登录后在application里存储一个已经登陆的用户集合HashMap,在用户登陆后将User对象存入session,同时存入HashMap中,用sessionid作为HashMap的key值,监听session,在session过期后将session中的用户从HashMap中移除。
判断用户重复登录,当用户登录时,到HashMap中查找是否有该用户,如果有,提示用户已经登录,否则正常登陆
这样做的缺点是,如果session不能正常过期,那么该用户将不能再登陆,直到session过期或管理员清楚该session
可以这样解决:当提示用户已经登录时,同时提示用户是否强制登陆,强制登陆后果就是将上一次登陆信息清楚,让上一次session过期,然后重新登录。
------解决方案--------------------
------解决方案--------------------直接记录在线情况,如果在线就不能登陆,也就是防止多处登陆。
------解决方案--------------------
------解决方案--------------------将登录用户信息存在Application或者数据库中,验证用户登录
------解决方案--------------------建个临时表存储已登录用户 ID(注销时将 ID 删除),登录时到临时表里看看是否包含此用户的 ID。
------解决方案--------------------不是那么好解决.
棘手啊.
首先要考虑的就是session的生命周期问题.
你不可能设置短了,不然用户会老登录.
你也不可能设置长了,长了用户非正常退出没法再进.
------解决方案--------------------关键是怎么判断用户退出了
------解决方案--------------------
------解决方案--------------------做过用户登录后踢掉前面登录的