Foros de discusión

как отловить события LogIn и LogOut в портлете

Alexandr A, modificado hace 11 años.

как отловить события LogIn и LogOut в портлете

New Member Mensaje: 1 Fecha de incorporación: 25/02/13 Mensajes recientes
Доброго времени суток.

Пишу портлет использующий 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 раз, желательно во время входа в систему, а не каждый раз при абсолютно любом действии в портлете?
thumbnail
Alexey Melnikov, modificado hace 11 años.

RE: как отловить события LogIn и LogOut в портлете

Regular Member Mensajes: 108 Fecha de incorporación: 27/03/12 Mensajes recientes
Добрый день.

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

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