Исходный код под вопросом:
@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 ?
}
Спасибо!