2012-05-04 38 views
13

estoy trabajando con: Liferay 6.0.6 con JBoss 5.1 y Struts2.Obtener el usuario actual Liferay utilizando un simple código Java

Mi pregunta es, ¿cómo conseguir que el usuario actual en Liferay una vez iniciada la sesión, utilizando un código deJava.

+0

usando por ID de acceso? –

+0

Quiero decir, la solución debe ser un código de Java y tenemos que recuperar el usuario actual por correo electrónico :) – Sabrina

Respuesta

27

En el método de doView/processAction hacer después

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

o utilizar el objeto ThemeDisplay. Contiene otra información como CompanyID, groupId, ...

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

Clases ThemeDisplay, webkeys nad usuario forman parte del portal service.jar.

Si necesita sólo algunas de ID para identificar usuario actual también se puede utilizar

String userId = request.getRemoteUser(); 

Esta solución no es Liferay específico y debe ser portátiles entre JSR-286 portales.

+0

muchas gracias :) Voy a probar todo esto y te diré – Sabrina

+1

me puedes decir más sobre la instancia "solicitud". cómo inicializarlo? – Sabrina

+2

Es RenderRequest, ActionRequest, EventRequest o ResourceRequest. Si no está familiarizado con ellos, entonces debe leer algunos tutoriales de portlets, por ejemplo, http://www.liferay.com/documentation/liferay-portal/6.0/development/-/ai/understanding-the-two-phases-of- portlet-execution –

6

Liferay proporciona la clase Util

com.liferay.portal.util.PortalUtil

Esta clase contiene todos los métodos de utilidad para obtener los atributos de uso frecuente.

Pruebe utilizar el método PortalUtil.getUser(PortletRequest portletRequest) para evitar crear nuevos objetos y referencias.

+0

¿Cuál es la diferencia con ThemeDisplay? – cheloncio

+0

@zhelon, nada, obtiene themeDisplay de la solicitud, y luego getUser() de él, PortalUtil.getUser() obtiene lo mismo de la solicitud, si ve PortalImpl.getUser() entonces verá este request.getAttribute (WebKeys. USUARIO); –

6

Ésta es una otra forma posible de hacerlo:

private LiferayFacesContext liferayFacesContext = LiferayFacesContext.getInstance(); 
User currentUser=liferayFacesContext.getUser() 
Cuestiones relacionadas