【CBoard】结合WebSocket消息机制,同名用户登录时,实时让第一个登录用户弹出消息窗口

如图:

 

 

Spring Security做用户管理可以,但是第一个登录用户被第二个登录用户踢掉后,前端的页面如果不刷新,是不会有相关的被注销登录的提示,只能在刷新页面后才能看到对应的文本,可以参考上一章节《36.Spring Security 用户并发控制入门 》。那么如何实现后者登录后,前者自动就弹出提示呢?这里借助WebSocket机制来完成。

原理是每个登录用户登录的时候,把用户名、sessionId放入 WebSocket服务端的一个静态哈希表中。

每次登录,当发现有登录名一致、sessionId不一致的消息的时候,就让之前在哈希表注册过的 那个sessionId的WebocketSession发送消息,然后再执行 Spring Security的退出。

 

posted on 2020-09-01 18:12  Neo0820  阅读(464)  评论(0编辑  收藏  举报

导航