2013-02-21 3 views
0

Я использую прослушиватели событий в спящем режиме для записи последнего измененного времени. Я использую Custom Integrator для регистрации прослушивателей событий. Я регистрирую свой интегратор, создав файл с определенным именем в META-INF, как описано here. Я также хочу записать имя пользователя текущего пользователя. Я предполагаю, что информация будет присутствовать в HttpSession. Но в MergeEventListener у меня нет доступа к HttpSession. Как получить HttpSession или есть ли другой способ получить зарегистрированного пользователя?Как получить текущего пользователя во время прослушивания события спящего режима

ответ

1

Наиболее распространенным решением, которое я видел, является использование сервлет-фильтра для ввода информации в ThreadLocal, когда запрос приходит, чтобы вы могли получить к нему доступ из статического контекста в любой произвольной точке вниз по стеку, который вы нужно это.

+0

Думаю, я должен был упомянуть, что использую весну. –

+0

Не знаете, что это изменило бы ситуацию? – Affe

+0

Я могу создать фильтр сервлета, и у меня есть доступ к объекту User в сеансе. Как я передаю это событию. Кроме того, это беспокоит меня: http://stackoverflow.com/a/373613/161628 –

0

Вы можете создать один служебный метод в одноплодном классе и поместите следующую строку коды, которые возвращают вошедшее в Usrename

SecurityContextHolder.getContext().getAuthentication().getPrincipal() 

Я сделал то же самое в моем вебе applicaiton с использованием Spring + Hibernate в любое время.

Надеюсь, это поможет и вам.

Смежные вопросы