Un tema relacionado bits:
Las personas mayores de conversión de código API de IBM portlets JSR 168 a uno tuvo que cambiar a PortletRequest HttpServletRequest en algunos parámetros del método, pero luego de WPS6.1 y más, no pueden convertirlo en PortletRequest (ya que no implementa la interfaz respectiva como parece) y si llaman "getRemoteUser" directamente en HttpServletRequest devuelven nulo (algunos dicen que un workarround es para habilitar la seguridad de la aplicación) opción en WAS [WebSphere Application Server], otros dicen que se necesita un marcado más relacionado con la seguridad en web.xml)
Parece que usar PUMA es utilizar PUMA, pero, por supuesto, eso es específico de IBM WebSphere. Probablemente en otros Contenedores de portlets haya otros workarrounds específicos del proveedor si uno encuentra que getRemoteUser siempre devuelve null (a juzgar por otras respuestas, entonces getUserPrincipal(). GetName() también devuelve null si getRemoteUser se implementa como un acceso directo a ese).
Por cierto, el código PUMA menciono anteriormente es aquí, ya que es un poco difícil de encontrar lo que funciona en WPS6.1 +:
import com.ibm.portal.portlet.service.PortletServiceHome;
import com.ibm.portal.um.*;
import com.ibm.portal.um.exceptions.PumaException;
import com.ibm.portal.puma.User;
//...
public String getCurrentUser(){
try {
Context ctx = new InitialContext();
Name myjndiname = new CompositeName(PumaHome.JNDI_NAME);
PumaHome myHome = (PumaHome) ctx.lookup(myjndiname);
if (myHome!=null) {
PumaProfile pumaProfile = myHome.getProfile();
com.ibm.portal.um.User user = (com.ibm.portal.um.User)pumaProfile.getCurrentUser();
List attributes = new ArrayList();
attributes.add("uid");
Map userAttributes = pumaProfile.getAttributes(user,attributes);
return (String) userAttributes.get("uid");
}
}
Busco a una visión más clara. ¿Cuál es la semántica de ambos ... cómo son diferentes? ¿Te darán cada uno dos resultados diferentes? ¿Son siempre lo mismo? – Dimitry
+1 esto me parece bastante claro. Quiero decir que siempre puedes mirar el código, pero imagino que uno se deriva del otro. –
-1. ** getRemoteUser() ** puede ser ** nulo ** cuando ** getUserPrincipal() ** no es ... Recibo este problema con * Spring MVC test framework *. ¡** getUserPrincipal(). GetName() ** es lo correcto para usar! – gavenkoa