Атмосфера: как войти в систему пользователя через соединение webSocket в Grails?

Я работаю над добавлением функциональности WebSockets в свое приложение Grails. Для этого я использую плагин Atmosphere Meteor 0.7.1. Рабочий процесс прост:

  • Пользователь входит в систему.
  • Открытая страница пользователя с функциональностью WebSockets
  • Пользователь нажимает кнопку «Подключиться», чтобы установить соединение ... и сервер не распознает его.

Я хотел бы знать, какой пользователь подключил мой webSocket.

Обычно определить текущего пользователя довольно просто, вызвав springSecurityService.getPrincipal() в любом контроллере. Мне удалось ввести springSecurityService в свой MeteorHandler, однако он говорит, что основным является null. Мне это кажется странным, поскольку обработчик имеет доступ к JSESSIONID cookie, поэтому я ожидаю, что он получит правильные данные сеанса.

Кроме того, команда request.session возвращает другой объект HttpSession по сравнению с той же командой, выполняемой в обычном действии контроллера.

Итак, есть ли способ получить текущего пользователя, вошедшего в систему, при подключении к веб-сокетам?

Заранее спасибо.


person Humanity    schedule 07.02.2014    source источник


Ответы (1)


Объект Principal можно легко получить из request.userPrincipal.principal

Это точно такой же объект, что и в springSecurityService.getPrincipal()

Дополнительные сведения см. Здесь: https://github.com/kensiprell/grails-atmosphere-meteor/issues/28#issuecomment-34629462

person Humanity    schedule 10.02.2014