我使用Spring的STOMP而不是WebSocket实现,使用功能齐全的ActiveMQ代理.当用户SUBSCRIBE访问某个主题时,在成功订阅之前,他们必须通过一些权限逻辑.我正在使用ChannelInterceptor来应用权限逻辑,如下所示:
WebSocketConfig.java:
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/stomp")
.setAllowedOrigins("*")
.withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableStompBrokerRelay("/topic", "/queue")
.setRelayHost("relayhost.mydomain.com")
.setRelayPort(61613);
}
@Override
public void configureClientInboundChannel(ChannelRegistration registration) {
registration.setInterceptors(new MySubscriptionInterceptor());
}
}
Run Code Online (Sandbox Code Playgroud)
WebSocketSecurityConfig.java:
public class WebSocketSecurityConfig extends AbstractSecurityWebSocketMessageBrokerConfigurer {
@Override
protected void configureInbound(MessageSecurityMetadataSourceRegistry messages) {
messages
.simpSubscribeDestMatchers("/stomp/**").authenticated()
.simpSubscribeDestMatchers("/user/queue/errors").authenticated()
.anyMessage().denyAll();
}
}
Run Code Online (Sandbox Code Playgroud)
MySubscriptionInterceptor.java:
public class MySubscriptionInterceptor extends ChannelInterceptorAdapter {
@Override
public Message<?> preSend(Message<?> message, MessageChannel channel) {
StompHeaderAccessor headerAccessor= StompHeaderAccessor.wrap(message);
Principal …Run Code Online (Sandbox Code Playgroud) java activemq-classic stomp spring-messaging spring-websocket
如果我有一个始终作为查询字符串传递的特定路由参数,那么使用angular的$routeParams服务检索param 和使用其$location.$$search服务之间是否存在差异?如果是这样,一个比另一个好吗?
网址: //localhost:80/app/profile?id=42
$routeParams 做法:
app.controller('ProfileController', ['$routeParams', function($routeParams) {
console.log($routeParams.id);
}]);
Run Code Online (Sandbox Code Playgroud)
$location 做法:
app.controller('ProfileController', ['$location', function($location) {
console.log($location.$$search.id);
}]);
Run Code Online (Sandbox Code Playgroud)
我已经$location在控制器中作为依赖注入,需要执行问题中详述的行为.此外,控制器的模块还没有依赖ngRoute.
根据这篇MDN文章和我可以找到的任何其他来源,"alert"和"confirm"不是JavaScript中的保留字.为什么它们没有列在这里,它们是否可以安全地用作函数体内的变量名?