Как сделать информацию об аутентификации доступной в запросе веб-сокета springboot?
При обработке запроса веб-сокета в контроллере
SecurityContextHolder.getContext().getAuthentication()
возвращает ноль. Но мне нужно знать, какой пользователь делает запрос.
Что было опробовано до сих пор:
Google указал мне на решения, реализующие ChannelInterceptor, но во всех его методах getAuthentication() также возвращает null. Так что нечего как-то переносить. Как получить текущего вошедшего в систему пользователя в контроллере веб-сокета
В реализации onApplicationEvent(SessionSubscribeEvent) или onApplicationEvent(SessionConnectEvent) на контроллере веб-сокета getAuthentication() возвращает null.
Я обнаружил, что в реализации HandshakeInterceptor функция getAuthentication() возвращает объект Principal. Какая информация может быть доступна в методе контроллера STOMP Websocket? Методы не имеют доступа к запросу, привязанному к потоку. ( Исключение не найдено ни одного связанного с потоком запроса ) при использовании:
RequestContextHolder.currentRequestAttributes().getSessionId()
И идентификатор сеанса, который можно ввести (8 символов), не соответствует идентификатору сеанса обычных запросов (32 символа): Как получить идентификатор сеанса в Spring WebSocketStompClient?
@Header("simpSessionId") Строка идентификатор сеанса