@Override public void handleMessage(Message<byte[]> message) { StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class); Assert.state(accessor != null, "No StompHeaderAccessor"); accessor.setSessionId(this.sessionId); Principal user = this.connectHeaders.getUser(); if (user != null) { accessor.setUser(user); } StompCommand command = accessor.getCommand(); if (StompCommand.CONNECTED.equals(command)) { if (logger.isDebugEnabled()) { logger.debug("Received " + accessor.getShortLogMessage(EMPTY_PAYLOAD)); } afterStompConnected(accessor); } else if (logger.isErrorEnabled() && StompCommand.ERROR.equals(command)) { logger.error("Received " + accessor.getShortLogMessage(message.getPayload())); } else if (logger.isTraceEnabled()) { logger.trace("Received " + accessor.getDetailedLogMessage(message.getPayload())); } handleInboundMessage(message); }
@Override public Message<?> preSend(Message<?> message, MessageChannel channel) { TestPrincipal user = new TestPrincipal(name); MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class).setUser(user); return message; } }
Principal user = SimpMessageHeaderAccessor.getUser(message.getHeaders()); if (user != null) { accessor.setUser(user);
private Message<byte[]> connectMessage(String sessionId, String user) { StompHeaderAccessor headers = StompHeaderAccessor.create(StompCommand.CONNECT); headers.setSessionId(sessionId); headers.setUser(new TestPrincipal(user)); return MessageBuilder.createMessage(new byte[0], headers.getMessageHeaders()); }
headerAccessor.setUser(getUser(session)); headerAccessor.setHeader(SimpMessageHeaderAccessor.HEART_BEAT_HEADER, headerAccessor.getHeartbeat()); if (!detectImmutableMessageInterceptor(outputChannel)) {
private Message<byte[]> createDisconnectMessage(WebSocketSession session) { StompHeaderAccessor headerAccessor = StompHeaderAccessor.create(StompCommand.DISCONNECT); if (getHeaderInitializer() != null) { getHeaderInitializer().initHeaders(headerAccessor); } headerAccessor.setSessionId(session.getId()); headerAccessor.setSessionAttributes(session.getAttributes()); Principal user = getUser(session); if (user != null) { headerAccessor.setUser(user); } return MessageBuilder.createMessage(EMPTY_PAYLOAD, headerAccessor.getMessageHeaders()); }
private void sendStompErrorFrameToClient(String errorText) { if (this.isRemoteClientSession) { StompHeaderAccessor accessor = StompHeaderAccessor.create(StompCommand.ERROR); if (getHeaderInitializer() != null) { getHeaderInitializer().initHeaders(accessor); } accessor.setSessionId(this.sessionId); Principal user = this.connectHeaders.getUser(); if (user != null) { accessor.setUser(user); } accessor.setMessage(errorText); accessor.setLeaveMutable(true); Message<?> errorMessage = MessageBuilder.createMessage(EMPTY_PAYLOAD, accessor.getMessageHeaders()); handleInboundMessage(errorMessage); } }
private Message<byte[]> message(StompCommand command, String sessionId, String user, String destination) { StompHeaderAccessor accessor = StompHeaderAccessor.create(command); if (sessionId != null) { accessor.setSessionId(sessionId); } if (user != null) { accessor.setUser(new TestPrincipal(user)); } if (destination != null) { accessor.setDestination(destination); } accessor.setLeaveMutable(true); return MessageBuilder.createMessage(new byte[0], accessor.getMessageHeaders()); }
@Override public void handleMessage(Message<byte[]> message) { StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class); Assert.state(accessor != null, "No StompHeaderAccessor"); accessor.setSessionId(this.sessionId); Principal user = this.connectHeaders.getUser(); if (user != null) { accessor.setUser(user); } StompCommand command = accessor.getCommand(); if (StompCommand.CONNECTED.equals(command)) { if (logger.isDebugEnabled()) { logger.debug("Received " + accessor.getShortLogMessage(EMPTY_PAYLOAD)); } afterStompConnected(accessor); } else if (logger.isErrorEnabled() && StompCommand.ERROR.equals(command)) { logger.error("Received " + accessor.getShortLogMessage(message.getPayload())); } else if (logger.isTraceEnabled()) { logger.trace("Received " + accessor.getDetailedLogMessage(message.getPayload())); } handleInboundMessage(message); }
Principal user = SimpMessageHeaderAccessor.getUser(message.getHeaders()); if (user != null) { accessor.setUser(user);
private void sendStompErrorFrameToClient(String errorText) { if (this.isRemoteClientSession) { StompHeaderAccessor accessor = StompHeaderAccessor.create(StompCommand.ERROR); if (getHeaderInitializer() != null) { getHeaderInitializer().initHeaders(accessor); } accessor.setSessionId(this.sessionId); Principal user = this.connectHeaders.getUser(); if (user != null) { accessor.setUser(user); } accessor.setMessage(errorText); accessor.setLeaveMutable(true); Message<?> errorMessage = MessageBuilder.createMessage(EMPTY_PAYLOAD, accessor.getMessageHeaders()); handleInboundMessage(errorMessage); } }
@Override public Message<?> preSend(Message<?> message, MessageChannel channel) { StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class); if (log.isTraceEnabled()) { log.trace("拦截器截获命令:" + accessor.getCommand()); } if (StompCommand.CONNECT.equals(accessor.getCommand())) { // websocket连接刚刚建立起来,需要验证用户身份;根据token识别用户 String token = null; String requestHeader = accessor.getNativeHeader("Authorization").get(0); if (requestHeader != null && requestHeader.startsWith("Bearer ")) { token = requestHeader.substring(7); } if (log.isTraceEnabled()) { log.trace("MyChannelInterceptorAdapter->preSend() ... " + requestHeader + "; token=" + token); } User user = null; if (token == null) { user = new User("GUEST"); } else { // 把token转变为用户 user = new User(token); } accessor.setUser(user); } return message; }
@Override public void handleMessage(Message<byte[]> message) { StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class); Assert.state(accessor != null, "No StompHeaderAccessor"); accessor.setSessionId(this.sessionId); Principal user = this.connectHeaders.getUser(); if (user != null) { accessor.setUser(user); } StompCommand command = accessor.getCommand(); if (StompCommand.CONNECTED.equals(command)) { if (logger.isDebugEnabled()) { logger.debug("Received " + accessor.getShortLogMessage(EMPTY_PAYLOAD)); } afterStompConnected(accessor); } else if (logger.isErrorEnabled() && StompCommand.ERROR.equals(command)) { logger.error("Received " + accessor.getShortLogMessage(message.getPayload())); } else if (logger.isTraceEnabled()) { logger.trace("Received " + accessor.getDetailedLogMessage(message.getPayload())); } handleInboundMessage(message); }
@Override public void handleMessage(Message<byte[]> message) { StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class); Assert.state(accessor != null, "No StompHeaderAccessor"); accessor.setSessionId(this.sessionId); Principal user = this.connectHeaders.getUser(); if (user != null) { accessor.setUser(user); } StompCommand command = accessor.getCommand(); if (StompCommand.CONNECTED.equals(command)) { if (logger.isDebugEnabled()) { logger.debug("Received " + accessor.getShortLogMessage(EMPTY_PAYLOAD)); } afterStompConnected(accessor); } else if (logger.isErrorEnabled() && StompCommand.ERROR.equals(command)) { logger.error("Received " + accessor.getShortLogMessage(message.getPayload())); } else if (logger.isTraceEnabled()) { logger.trace("Received " + accessor.getDetailedLogMessage(message.getPayload())); } handleInboundMessage(message); }
@Override public Message<?> preSend(final Message<?> message, final MessageChannel channel) throws AuthenticationException { final StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class); if (StompCommand.CONNECT == accessor.getCommand()) { final String username = accessor.getFirstNativeHeader(USERNAME_HEADER); final String authToken = accessor.getFirstNativeHeader(TOKEN_HEADER); final Authentication user = webSocketAuthenticatorService.getAuthenticatedOrFail(username, authToken); accessor.setUser(user); } return message; }
accessor.setUser( authentication );
private Message<byte[]> createDisconnectMessage(WebSocketSession session) { StompHeaderAccessor headerAccessor = StompHeaderAccessor.create(StompCommand.DISCONNECT); if (getHeaderInitializer() != null) { getHeaderInitializer().initHeaders(headerAccessor); } headerAccessor.setSessionId(session.getId()); headerAccessor.setSessionAttributes(session.getAttributes()); Principal user = getUser(session); if (user != null) { headerAccessor.setUser(user); } return MessageBuilder.createMessage(EMPTY_PAYLOAD, headerAccessor.getMessageHeaders()); }
private Message<byte[]> createDisconnectMessage(WebSocketSession session) { StompHeaderAccessor headerAccessor = StompHeaderAccessor.create(StompCommand.DISCONNECT); if (getHeaderInitializer() != null) { getHeaderInitializer().initHeaders(headerAccessor); } headerAccessor.setSessionId(session.getId()); headerAccessor.setSessionAttributes(session.getAttributes()); Principal user = getUser(session); if (user != null) { headerAccessor.setUser(user); } return MessageBuilder.createMessage(EMPTY_PAYLOAD, headerAccessor.getMessageHeaders()); }
private void sendStompErrorFrameToClient(String errorText) { if (this.isRemoteClientSession) { StompHeaderAccessor accessor = StompHeaderAccessor.create(StompCommand.ERROR); if (getHeaderInitializer() != null) { getHeaderInitializer().initHeaders(accessor); } accessor.setSessionId(this.sessionId); Principal user = this.connectHeaders.getUser(); if (user != null) { accessor.setUser(user); } accessor.setMessage(errorText); accessor.setLeaveMutable(true); Message<?> errorMessage = MessageBuilder.createMessage(EMPTY_PAYLOAD, accessor.getMessageHeaders()); handleInboundMessage(errorMessage); } }
private void sendStompErrorFrameToClient(String errorText) { if (this.isRemoteClientSession) { StompHeaderAccessor accessor = StompHeaderAccessor.create(StompCommand.ERROR); if (getHeaderInitializer() != null) { getHeaderInitializer().initHeaders(accessor); } accessor.setSessionId(this.sessionId); Principal user = this.connectHeaders.getUser(); if (user != null) { accessor.setUser(user); } accessor.setMessage(errorText); accessor.setLeaveMutable(true); Message<?> errorMessage = MessageBuilder.createMessage(EMPTY_PAYLOAD, accessor.getMessageHeaders()); handleInboundMessage(errorMessage); } }