如题, 补充:不管第一个用户登录之后在那个界面,第二个用户一登录,第一个用户就跳转到一个通知账户已被其他地方登录页面,
给你提供点思路吧,在页面你要有个轮训,js每隔一段时间向服务器发起一次请求,验证当前用户是否在其他地方登陆,如果服务器返回了该用户在其他地方登陆的信息,那么js就直接导航到通知页。服务器中可以在数据库中保存用户登陆的消息,在js每次请求的时候去查一下数据库中有没有用户登陆的消息,有的话就返回给该js请求,然后服务端就可以执行踢人操作了,网页中可以导航到通知登陆页面,另外可以用WebSocket来和服务器通信,获取该用户的登陆状态,不过IE10以下版本的浏览器不支持,chrome,firefox,safari,Opera基本都支持,这个对浏览器还是有一定约束的
首先,看你的用户认证方式。如果是session类的,那么先让它失效;如果是oauth token这类的,直接刷新token。
完成上步之后,浏览器下次刷新就能退出了。
如果想及时退出,那么就需要通过轮训、长连接、WebSocket等方式通知浏览器刷新一次。
用户登录时分配给该对话一个会话ID,服务端记录会话ID于Session或数据库登记其他位置,将此ID记录在客户端的Cookies。客户端使用js轮询服务端一个界面以获取服务端当前登录的会话ID,如果与本地不一致则跳转。另外,页面一跳转时首先判断会话ID是否正确,以决定是否跳转至被踢掉页面。
FYI:
http://www.cnblogs.com/whz881027/articles/2105985.html
我是这么实现的,在登录时会存储将token存储到redis中,然后每次调用其它接口的时候,我都在网关里面将请求头的token提取出来和redis中存储的token进行比较,如果一样,就继续走下去,如果不一样那就直接给登出,因为每次登陆的token是不一样的