使用简单的Java代码获取当前用户Liferay

Sab*_*ina 13 authentication jboss portal struts2 liferay

我正在使用:Liferay 6.0.6JBoss 5.1Struts2.

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

Fra*_*man 27

在doView/processAction方法中执行以下操作

User user = (User) request.getAttribute(WebKeys.USER);
Run Code Online (Sandbox Code Playgroud)

或使用ThemeDisplay对象.它包含另一个信息,如companyId,groupId,...

ThemeDisplay td  =(ThemeDisplay)request.getAttribute(WebKeys.THEME_DISPLAY);
User user = td.getUser();
Run Code Online (Sandbox Code Playgroud)

类ThemeDisplay,用户nad WebKeys是portal-service.jar的一部分.

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

String userId = request.getRemoteUser();
Run Code Online (Sandbox Code Playgroud)

此解决方案不是Liferay特定的,应该可以在jsr-286门户中移植.

  • 它的RenderRequest,ActionRequest,EventRequest或ResourceRequest.如果您不熟悉它们,那么您应该阅读一些portlet教程,例如http://www.liferay.com/documentation/liferay-portal/6.0/development/-/ai/understanding-the-two-phases-of- portlet的执行 (2认同)

Fel*_*sty 6

Liferay提供Util类

com.liferay.portal.util.PortalUtil

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

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


Cha*_*JRA 6

这是另一种可能的方法:

private LiferayFacesContext liferayFacesContext = LiferayFacesContext.getInstance();
User currentUser=liferayFacesContext.getUser()
Run Code Online (Sandbox Code Playgroud)