14

我正在使用:Liferay 6.0.6JBoss 5.1Struts2

我的问题是,如何使用Java代码在登录后获取Liferay中的当前用户。

4

3 回答 3

28

在您的 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 的一部分。

如果您只需要一些 id 来识别当前用户,您也可以使用

String userId = request.getRemoteUser();

这个解决方案不是 Liferay 特定的,应该可以在 jsr-286 门户之间移植。

于 2012-05-04T12:23:21.473 回答
6

Liferay 提供 Util 类

com.liferay.portal.util.PortalUtil

此类包含获取常用属性的所有实用方法。

尝试使用PortalUtil.getUser(PortletRequest portletRequest)方法来避免创建新对象和引用。

于 2012-06-06T05:36:51.223 回答
6

这是另一种可能的方法:

private LiferayFacesContext liferayFacesContext = LiferayFacesContext.getInstance();
User currentUser=liferayFacesContext.getUser()
于 2013-04-25T17:41:46.863 回答