我正在通过 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 sample和 its security config 。简而言之,在此示例中,在 HTTP 升级阶段强制执行安全性。
关于Spring 4 STOMP over Websockets - 如何正确设置登录名和密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23008789/