Получите текущего пользователя Liferay, используя простой код Java

Я работаю с: Liferay 6.0.6 с JBoss 5.1 и Struts2.

Мой вопрос заключается в том, как получить текущего пользователя в Liferay после входа в систему, используя код Java.


person Sabrina    schedule 04.05.2012    source источник
comment
Я имел в виду, что решение должно быть кодом Java, и мы должны получить текущего пользователя по электронной почте :)   -  person Sabrina    schedule 04.05.2012


Ответы (3)


В вашем методе doView/processAction выполните следующие действия.

User user = (User) request.getAttribute(WebKeys.USER);

или используйте объект ThemeDisplay. Он содержит другую информацию, такую ​​как companyId, groupId, ...

ThemeDisplay td  =(ThemeDisplay)request.getAttribute(WebKeys.THEME_DISPLAY);
User user = td.getUser();

Классы ThemeDisplay, User nad WebKeys являются частью portal-service.jar.

Если вам нужен только какой-то идентификатор для идентификации текущего пользователя, вы также можете использовать

String userId = request.getRemoteUser();

Это решение не относится к Liferay и должно быть переносимым между порталами jsr-286.

person František Hartman    schedule 04.05.2012
comment
можете ли вы рассказать мне больше о запросе экземпляра. как его инициализировать? - person Sabrina; 04.05.2012
comment
Это либо RenderRequest, ActionRequest, EventRequest или ResourceRequest. Если вы не знакомы с ними, вам следует прочитать учебник по портлетам, например liferay.com/documentation/liferay-portal/6.0/development/-/ai/ - person František Hartman; 04.05.2012
comment
Пользователь currentUser = LiferayFacesContext.getInstance().getUser(); - person Aalkhodiry; 28.10.2013

Liferay предоставляет класс Util

com.liferay.portal.util.PortalUtil

Этот класс содержит все служебные методы для получения часто используемых атрибутов.

Попробуйте использовать метод PortalUtil.getUser(PortletRequest portletRequest), чтобы избежать создания новых объектов и ссылок.

person Felix Christy    schedule 06.06.2012
comment
Чем отличается ThemeDisplay? - person TuGordoBello; 26.05.2015
comment
@zhelon, ничего, ты из запроса выбираешь themeDisplay, а потом из него getUser(), PortalUtil.getUser() извлекает тоже самое из запроса, если ты видишь PortalImpl.getUser(), то ты заметишь этот request.getAttribute(WebKeys.USER ); - person Felix Christy; 27.05.2015

Это другой возможный способ сделать это:

private LiferayFacesContext liferayFacesContext = LiferayFacesContext.getInstance();
User currentUser=liferayFacesContext.getUser()
person Charaf JRA    schedule 25.04.2013