Spring Stomp SimpUserRegistry匿名用户

问题描述 投票:2回答:2

SimpUserRegistry允许您检索所有经过身份验证的Stomp会话的详细信息,是否有任何此类可以让我迭代匿名用户会话?

java spring spring-boot websocket stomp
2个回答
1
投票

就像howie在他的回答中描述的那样,只有非匿名用户才会被添加到SimpUserRegistry

但是如果你真的想添加匿名用户,你只需要对DefaultHandshakeHandler类进行子类化,并覆盖Spring Doc for Version 5.0.0.M1 - Chapter 22中所述的determineUser方法。这也应该适用于使用Spring Boot 2.1.3.RELEASE时当前正在使用的5.1.5.Release:

在某些情况下,即使用户尚未经过正式身份验证,也可以将标识分配给WebSocket会话。例如,移动应用可能会根据地理位置为匿名用户分配一些身份。目前,应用程序可以对DefaultHandshakeHandler进行子类化并覆盖determineUser方法。然后可以插入自定义握手处理程序(请参见第22.2.4节“部署注意事项”中的示例)。

这是一个答案(qazxsw poi),它向您展示如何在自定义握手处理程序中创建匿名主体并确定它。

最后,您必须将自定义握手处理程序的实例添加到已注册的端点,但这取决于您是否使用STOMP。


0
投票

以下是StompSubProtocolHandler的一些代码片段 - handleMessageFromClient方法将用户添加到stompAuthentications映射并发布SessionConnectEvent事件 -

Spring websockets without principal

我想你必须检查这个源代码qazxsw poi,并自定义它。

© www.soinside.com 2019 - 2024. All rights reserved.