Я делаю эксперименты с Spring 4 веб-разъемами и топами, и мне сложно определить, как получить/установить текущие пользовательские и другие атрибуты сеанса в методе обработки сообщений, аннотированные с помощью @MessageMapping
.
В документации говорится, что методы обработки сообщений могут принимать аргумент Principal как аргумент, и я обнаружил, что принципал извлекается Spring вызывая getUserPrincipal()
в собственном сеансе сокета, а затем связанный с сеансом сокета, но я не нашел способ легко настроить это поведение, кроме написания фильтра сервлета и обернуть исходный запрос в оболочку, возвращающую найденную основную информацию в моем cookie.
Итак, мои вопросы:
- Как вручную установить принципала в сеанс сокета, когда клиент подключается (у меня есть эта информация благодаря пользовательскому cookie, и я не использую Spring security)?
- Если 1 невозможно, как добавить дополнительные атрибуты в сеанс сокета при подключении клиента?
- Как получить доступ к сеансу сокета и его атрибутам из метода обработки сообщений?
- Есть ли способ доступа к логину и паролю, отправленному браузером во время соединения. Они, кажется, полностью игнорируют Spring и не доступны.