【发布时间】:2017-12-04 18:52:45
【问题描述】:
AbstractWebSocketMessageBrokerConfigurer(Spring Boot)有没有办法拦截用户注册到特定频道?
我在registerStompEndpoints 中使用 HandshakeHandler 完成了基本身份验证:
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
HandshakeHandler handler = new DefaultHandshakeHandler() {
@Override
protected Principal determineUser(ServerHttpRequest request,
WebSocketHandler wsHandler, Map<String, Object> attributes) {
Principal principal = request.getPrincipal();
if (principal == null) {
return () -> getPrincipal();
}
return principal;
}
};
registry.addEndpoint("/websocket")
.setHandshakeHandler(handler)
.setAllowedOrigins("*").withSockJS();
}
现在,如果用户没有“admin”权限,我想阻止该用户注册到“/topic/admin/news”。我没有使用 Spring Security。我想在注册到频道之前有一个拦截器。
作为替代方案,我想使用SimpMessagingTemplate 仅从具有权限的频道向用户发送消息。有没有办法查看哪些用户当前连接到我的 stomp-connection?
【问题讨论】:
标签: spring spring-mvc websocket stomp spring-websocket