diff --git a/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompWebSocketHandler.java b/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompWebSocketHandler.java index 89849216576ca2c17e9a0e751db607610a01b2b0..1ea634f23f4b5cbd93791f3cc76d029826b74a51 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompWebSocketHandler.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompWebSocketHandler.java @@ -43,6 +43,13 @@ import reactor.util.Assert; */ public class StompWebSocketHandler extends TextWebSocketHandlerAdapter implements MessageHandler { + /** + * The name of the header set on the CONNECTED frame indicating the name of the user + * connected authenticated on the WebSocket session. + */ + public static final String CONNECTED_USER_HEADER = "user-name"; + + private static final byte[] EMPTY_PAYLOAD = new byte[0]; private static Log logger = LogFactory.getLog(StompWebSocketHandler.class); @@ -138,6 +145,10 @@ public class StompWebSocketHandler extends TextWebSocketHandlerAdapter implement } connectedHeaders.setHeartbeat(0,0); // TODO + if (session.getPrincipal() != null) { + connectedHeaders.setNativeHeader(CONNECTED_USER_HEADER, session.getPrincipal().getName()); + } + // TODO: security Message connectedMessage = MessageBuilder.withPayload(EMPTY_PAYLOAD).copyHeaders( diff --git a/spring-messaging/src/main/java/org/springframework/messaging/support/NativeMessageHeaderAccessor.java b/spring-messaging/src/main/java/org/springframework/messaging/support/NativeMessageHeaderAccessor.java index ddf646bdc6fd015ed7295b2d78f042b1dfddbd6d..e9dc13a2b894046b218f5e0bf1c399033df14cb8 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/support/NativeMessageHeaderAccessor.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/support/NativeMessageHeaderAccessor.java @@ -118,7 +118,7 @@ public class NativeMessageHeaderAccessor extends MessageHeaderAccessor { return null; } - protected String getFirstNativeHeader(String headerName) { + public String getFirstNativeHeader(String headerName) { List values = getNativeHeader(headerName); return CollectionUtils.isEmpty(values) ? null : values.get(0); } @@ -133,7 +133,7 @@ public class NativeMessageHeaderAccessor extends MessageHeaderAccessor { } } - protected void setNativeHeader(String name, String value) { + public void setNativeHeader(String name, String value) { this.nativeHeaders.set(name, value); }