SimpMessageHeaderAccessor # getUser обнуляется после обновления до spring-boot-2. Как справиться? - PullRequest
0 голосов
/ 30 октября 2018

Исходный код под вопросом:

@Configuration
public class PresenceEventListener {    
    @EventListener
    public void handleSessionConnected(SessionConnectEvent event) {
        SimpMessageHeaderAccessor headers = SimpMessageHeaderAccessor.wrap(event.getMessage());
        Principal principal = headers.getUser();
        /* custom logic with principal.getName() */
    }

    @EventListener
    public void handleSessionDisconnect(SessionDisconnectEvent event) {
        SimpMessageHeaderAccessor headers = SimpMessageHeaderAccessor.wrap(event.getMessage());
        Principal principal = headers.getUser();
        /* custom logic with principal.getName() */
    }
}

Этот код более или менее идентичен во всех примерах, которые я смог найти. Вот одна ссылка ...

При обновлении с весенней загрузки v1.5 до v2 Findbugs жалуется на .getName(), поскольку principal может быть null и не проверяется.

Это потому, что весенние сообщения, начиная с v5, помечают метод SimpMessageHeaderAccessor # getUser как @Nullable.

Мой вопрос: как это правильно обрабатывать? (т.е. когда #getUser возвращает null) Должен ли код вызывать исключение? ничего не делать? И что это на самом деле означает, что пользователь null в этом контексте? Можно ли считать это попыткой взлома?

Principal principal = headers.getUser();
if (principal == null) {
    // what should happen here ?
}

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...