在控制器中处理WebSocket请求时
SecurityContextHolder.getContext().getAuthentication()
返回null。但是我需要知道是哪个用户发出请求。
到目前为止尝试的内容:
- Google向我推荐了实现ChannelInterceptor的解决方案,但在它的所有方法中,**getAuthentication()**也返回null。因此,没有什么东西可以继续使用。How to retrieve the current logged in user in a websocket controller
- 在WebSocket控制器上实现**onApplicationEvent(会话订阅事件)或onApplicationEvent(会话连接事件)**时,getAuthentication()返回空值。
- 我发现在HandshakeInterceptor的一个实现中,**getAuthentication()*返回了一个Principal。在STOMP WebSocket控制器方法中可以获得什么信息?这些方法不能访问线程绑定请求。( 没有发现线程绑定请求 * 异常)当使用:
- 当前请求属性().getSessionId()*
并且可以注入的sessionId(8个字符)与正常请求的会话ID(32个字符)不匹配:How to get Session Id in Spring WebSocketStompClient?
- @信头(“simpSessionId”)字串工作阶段识别码 *
1条答案
按热度按时间46qrfjad1#
控制器可以侦听包含8个字符会话ID的会话连接事件和会话断开事件:
并且消息处理方法可以获得注入的8个字符的sessionId: