首页 新闻 会员 周边

java怎么实现第二个用户登录的时候把第一个用户立马就挤下来

1
悬赏园豆:180 [待解决问题]

如题,  补充:不管第一个用户登录之后在那个界面,第二个用户一登录,第一个用户就跳转到一个通知账户已被其他地方登录页面,

袁文的主页 袁文 | 初学一级 | 园豆:8
提问于:2015-11-19 10:52
< >
分享
所有回答(5)
0

给你提供点思路吧,在页面你要有个轮训,js每隔一段时间向服务器发起一次请求,验证当前用户是否在其他地方登陆,如果服务器返回了该用户在其他地方登陆的信息,那么js就直接导航到通知页。服务器中可以在数据库中保存用户登陆的消息,在js每次请求的时候去查一下数据库中有没有用户登陆的消息,有的话就返回给该js请求,然后服务端就可以执行踢人操作了,网页中可以导航到通知登陆页面,另外可以用WebSocket来和服务器通信,获取该用户的登陆状态,不过IE10以下版本的浏览器不支持,chrome,firefox,safari,Opera基本都支持,这个对浏览器还是有一定约束的

Maculish | 园豆:223 (菜鸟二级) | 2015-11-19 11:11
0

首先,看你的用户认证方式。如果是session类的,那么先让它失效;如果是oauth token这类的,直接刷新token。

完成上步之后,浏览器下次刷新就能退出了。

如果想及时退出,那么就需要通过轮训、长连接、WebSocket等方式通知浏览器刷新一次。

幻天芒 | 园豆:37185 (高人七级) | 2015-11-19 12:06
0

用户登录时分配给该对话一个会话ID,服务端记录会话ID于Session或数据库登记其他位置,将此ID记录在客户端的Cookies。客户端使用js轮询服务端一个界面以获取服务端当前登录的会话ID,如果与本地不一致则跳转。另外,页面一跳转时首先判断会话ID是否正确,以决定是否跳转至被踢掉页面。

于为源 | 园豆:956 (小虾三级) | 2015-11-19 13:27
0

FYI:

http://www.cnblogs.com/whz881027/articles/2105985.html

Vinton.Liu | 园豆:187 (初学一级) | 2015-11-21 14:15
0

我是这么实现的,在登录时会存储将token存储到redis中,然后每次调用其它接口的时候,我都在网关里面将请求头的token提取出来和redis中存储的token进行比较,如果一样,就继续走下去,如果不一样那就直接给登出,因为每次登陆的token是不一样的

筱忆她 | 园豆:202 (菜鸟二级) | 2021-05-26 17:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册