Как сделать информацию об аутентификации доступной в запросе веб-сокета 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") Строка идентификатор сеанса

0 ответов

Другие вопросы по тегам