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

时间:2014-04-11 09:33:07

标签: spring stomp spring-websocket

我正在玩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;    
    };

我的配置是否有问题?如何正确设置。谢谢

1 个答案:

答案 0 :(得分:3)

您的申请是由3"系统"或者"演员"在这种情况下:

  • 浏览器
  • Spring应用程序
  • 经纪人(例如RabbitMQ)

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

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

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