Spring 4 STOMP over Websockets - 如何正确设置登录名和密码

标签 spring stomp spring-websocket

我正在通过 Websockets 玩 Spring 4 Stomp。现在我尝试将登录名和密码放入我的配置中。

@Override
    public void configureMessageBroker(MessageBrokerRegistry registry) {
        //registry.enableSimpleBroker("/queue/", "/topic/");
        //Enable MQ
        StompBrokerRelayRegistration relay=registry.enableStompBrokerRelay("/queue/", "/topic/");
        relay.setSystemLogin("login");
        relay.setSystemPasscode("passcode");
        //relay.setClientLogin("login");
        //relay.setClientPasscode("passcode");
        registry.setApplicationDestinationPrefixes("/app");

    }

但是当我尝试使用不同的登录名和密码进行连接时,我仍然可以连接。这是我的 JavaScript。

$scope.initSockets = function() {
        $scope.socket.client = new SockJS('/Html5GameApp');
        $scope.socket.stomp = Stomp.over($scope.socket.client);
        $scope.socket.stomp.connect("sample","sample",function(frame) {
        console.log('Connected: ' + frame);
        $scope.socket.stomp.subscribe("/queue/stomp.data", $scope.liveGameData);
        });
        $scope.socket.client.onclose = $scope.reconnect;    
    };

我的配置有问题吗?我该如何正确设置它。谢谢

最佳答案

在此场景中,您的应用程序由 3 个“系统”或“参与者”组成:

  • 浏览器
  • Spring 应用程序
  • 代理(例如 RabbitMQ)

如果你看一下 StompBrokerRelayRegistration的 javadoc,你会看到:

  • 系统凭证用于共享“系统”连接,用于从应用程序内向 STOMP 代理发送消息,即与特定客户端 session 无关的消息(例如 REST/HTTP 请求)处理方法)。
  • 客户端凭据用于代表连接的客户端创建与 STOMP 代理的连接。

如果您确实想在应用程序中强制执行访问安全性,您可以查看 the portfolio sampleits security config 。简而言之,在此示例中,在 HTTP 升级阶段强制执行安全性。

关于Spring 4 STOMP over Websockets - 如何正确设置登录名和密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23008789/

相关文章:

java - 使用JavaConfig时Spring bean定义类名为null

Spring MVC : how to get case-insensitive ordering from Pageable

spring-mvc - 如何在 Spring MVC 中正确配置 Stomp 和 SockJS 端点?

java - Activemq Topic Consumer 消费某些消息失败

spring-boot - 使用 Spring Websocket 向特定用户发送消息

angular - Websocket 在 localhost 但不是 Heroku 上工作

java - 未指定子协议(protocol)时如何拒绝 WebSocket 连接

java - maven - 用于 Spring 接口(interface)和实现的独立模块

java - Spring框架页面刷新时相同的对象,如何避免

java - 从 java WebSocketStompClient 发送 BinaryMessage