Forums

Home » Liferay Portal » Pусский

Combination View Flat View Tree View
Threads [ Previous | Next ]
toggle
Alexandr A
как отловить события LogIn и LogOut в портлете
February 25, 2013 12:32 AM
Answer

Alexandr A

Rank: New Member

Posts: 1

Join Date: February 25, 2013

Recent Posts

Доброго времени суток.

Пишу портлет использующий Vaadin. Необходимо получить пользователя при его входе в систему и узнать об его выходе из системы.
Пробовал примерно так:
public class MyApplication extends Application implements LoginListener {
@Override
public void onLogin(LoginEvent event) {}
}
не работает...
Подскажите как сделать правильно.

Пользователя получаю:
@Override
public void onRequestStart(PortletRequest request, PortletResponse response) {PortalUtil.getUser(request);}

Можно ли как нибудь получить его 1 раз, желательно во время входа в систему, а не каждый раз при абсолютно любом действии в портлете?
Alexey Melnikov
RE: как отловить события LogIn и LogOut в портлете
February 25, 2013 12:59 AM
Answer

Alexey Melnikov

Rank: Regular Member

Posts: 103

Join Date: March 27, 2012

Recent Posts

Добрый день.

Тут несколько вариантов:

1) Заставить работать Vaadin ;)
2) Можно использовать thread local com.liferay.portal.security.auth.PrincipalThreadLocal который содержит userId
3) Практически с любым запросом javax.portlet.PortletRequest в лайфрее доступен класс ThemeDisplay, в котором есть вся информация по текущему пользователю и не только ему.
4) То что хочется вам прицепится к событиям входа, можно сделать через hook, для этого надо будет переопределить свойства портала как делаем это мы:
1login.events.post=ru.emdev.audit.PostLoginAction
2logout.events.pre=ru.emdev.audit.PostLogoutAction
3servlet.session.destroy.events=ru.emdev.audit.SessionDestroyAction

Первые 2 класса реализуют com.liferay.portal.kernel.events.Action
Последний com.liferay.portal.kernel.events.SessionAction

==
Alexey Melnikov
http://emdev.ru