1

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

@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;    
    };

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

4

1 回答 1

3

在这种情况下,您的应用程序由 3 个“系统”或“参与者”组成:

  • 浏览器
  • 春天应用
  • 代理(例如 RabbitMQ)

如果您查看StompBrokerRelayRegistration的 javadoc,您会看到:

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

如果您实际上是在尝试在应用程序中实施访问安全性,您可以查看投资组合示例及其安全配置。简而言之,在此示例中,在 HTTP 升级阶段实施了安全性。

于 2014-04-11T13:25:13.460 回答