首页 新闻 会员 周边 捐助

分布式系统 单点登录 立刻下线其它用户

0
悬赏园豆:100 [待解决问题]

需要在分布式微服务系统中实现 单点登录,即在其它电脑登录同一账号时,会立刻下线当前登录的用户。 当下我们用的定时器 每隔一分钟调用一次接口,从而验证token的失效情况。
请问大佬们有什么好的解决方案嘛!!!!麻烦大佬给点思路....

Richarddjh的主页 Richarddjh | 初学一级 | 园豆:102
提问于:2021-07-06 17:19
< >
分享
所有回答(8)
0

定时器这个也太不好了,你可以把登陆状态记在一个地方,如果有其他端登陆了,你可以根据记的登陆状态下线当前登录用户

不知道风往哪儿吹 | 园豆:2037 (老鸟四级) | 2021-07-06 17:47

定时器是公司里之前开发人员做的方案,登陆我们是把token和登陆状态存到了Redis. 问题是他端登陆后,这边如何立即感知到呢

支持(0) 反对(0) Richarddjh | 园豆:102 (初学一级) | 2021-07-09 21:06
0

登陆状态表不行吗?定时器当前不行啊

人间春风意 | 园豆:2784 (老鸟四级) | 2021-07-06 18:08

我之前做过单端单登陆的,是用的websocket,每一次建立连接都查一下表有没有处于登陆状态,处于登陆状态就通过websocket通知旧的,进行下线。

支持(0) 反对(0) 人间春风意 | 园豆:2784 (老鸟四级) | 2021-07-07 08:21

定时器是会隔段时间调用接口,查看token失效情况,失效就给出提示退到登录页面了

支持(0) 反对(0) Richarddjh | 园豆:102 (初学一级) | 2021-07-09 21:10
0

websocket?

forhells | 园豆:724 (小虾三级) | 2021-07-06 18:44
0

token自身有一个过期时间如1d,在进行token验证的地方,加一个禁用token list ,每次登陆的时候,将当前非所有的uid的token记录到这个禁用list里面.通知方式通过redis pub sub

[秦时明月] | 园豆:738 (小虾三级) | 2021-07-07 14:32
0

这里肯定有一个事件推送的,用mq也可以。方案是在你重新登录的时候,还没有获得最新token的时候,发起这个用户的注销事件,然后注销后,获得token登录。这样就能解决了。

大人物云 | 园豆:202 (菜鸟二级) | 2021-07-07 17:03
1

写个过滤器去查询登录状态,登录或者点击页面时,过滤器去查询一下登录状态,如果有新的人登录了就提示当前用户下线。这样很方便的,不用去考虑什么token啊,websocket啊之类的,直接调用退出接口,美滋滋

熊泽-学习中的苦与乐 | 园豆:2272 (老鸟四级) | 2021-07-07 17:14

这个方法我也在用,最好添加一个redis,不用每次都去查数据库,查redis会比较友好

支持(0) 反对(0) 重生时空之门 | 园豆:104 (初学一级) | 2021-07-07 17:16
0
ycyzharry | 园豆:25683 (高人七级) | 2021-07-08 23:20
0

。。。把token失效掉就好了

练涛 | 园豆:12 (初学一级) | 2021-07-09 15:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册