2017-02-05 5 views
0

После входа в систему веб-сайты не могут найти текущего пользователя по session.getPrincipal() (он возвращает null).Spring Boot WebSockets не удалось найти текущего пользователя (основного)

Вот код Java для WebSockets:

@Configuration 
@EnableWebSocketMessageBroker 
public class WebSocketConfiguration extends AbstractWebSocketMessageBrokerConfigurer { 
    @Override 
    public void configureMessageBroker(MessageBrokerRegistry config) { 
     config.enableSimpleBroker("/queue", "/topic"); 
     config.setApplicationDestinationPrefixes("/socket"); 
     config.setUserDestinationPrefix("/user"); 
    } 

    @Override 
    public void registerStompEndpoints(StompEndpointRegistry registry) { 
     registry.addEndpoint("/app").withSockJS(); 
    } 
} 

Похоже, весна загрузки ошибка - я использую 1.3.8 RELEASE. После обновления страницы пользователь получает правильно зарегистрированного пользователя.

А вот передний конец (подписка)

ngstomp.subscribeTo('/user/queue/message') 
.callback(function(response) { 
    console.log('Test'); 
}) 
.withBodyInJson() 
.connect(); 

Я попытался это решение: https://www.javacodegeeks.com/2014/11/spring-boot-based-websocket-application-and-capturing-http-session-id.html

Но это не работает.

Пожалуйста, помогите!

ответ

1

Зачем вам требуется session.getPricncipal(). Spring предоставляет объект Principal, который автоматически вводится в ваш контроллер следующим образом.

@MessageMapping("/message") 
public String processMessageFromClient(@Payload String message, Principal principal) throws Exception { 
     messagingTemplate.convertAndSendToUser(principal.getName(), "/queue/reply", name); 
     return name; 
    } 

Ссылка: Spring Boot Websocket Example

+0

кажется, прежде, войдите в аккаунт идентификатора сессии отличается после-входа в идентификатору сессии. – KimchiMan

+0

Я использую аннотацию: '@ SendToUser' – KimchiMan

+0

' @MessageMapping ("/ сообщение") @SendToUser общественности Строка loadMessage (@Payload Строка сообщения) { \t ответное сообщение; } ' – KimchiMan

Смежные вопросы