Versiones comparadas

Clave

  • Se ha añadido esta línea.
  • Se ha eliminado esta línea.
  • El formato se ha cambiado.

Para realizar la suplantación impersonación en aplicaciones que no la tienen, seguiremos los siguientes pasos:


  • Descargamos el fichero View filenamesuplantacion_arqetipo_v2.0.19.zipheight250 en  en la raíz del proyecto, y los descomprimimos con Extraer aquí.
  • Hay que revisar la página suplantarUsuario.xhtml, probablemente, tenga algún problema visual, ya que esta basado en el tema corporativo.
  • Hay que revisar el fichero suplantarUsuario.page.xml, para establecer en el <restrict>, la expresión EL válida, que permite a los usuarios con permisos/roles válidos, acceder a ella.

Otro elemento a tener en cuenta en la suplantaciónimpersonación, son los datos del usuario que va a suplantar, que hay almacenados en el Identity / UmuIdentity. Tenemos disponible en la clase UmuIdentity, los métodos métodos:

  • protected void backupProperties( Map<String, Object> identityProperties )
  • protected void restoreProperties( Map<String, Object> identityProperties )

que permiten guardar y restaurar esos datos, como por ejemplo el UUID del usuario. En la llamada al método supplantUser() se llamará el método backupProperties(), y en la llamada al método restoreSupplanterUser() se llamará el método restoreProperties().


Estos métodos para backup/restore, se pueden sobrescribir para añadir las propiedades a salvar/restaurar, después de la suplantación. Solo son necesarias salvar/restaurar, las propiedades que no se cargan cuando se llama al método UmuIDentityLoader.loadDataLoginSuccessful(), que se ejecuta automáticamente al lanzar la aplicación el evento Identity.EVENT_LOGIN_SUCCESSFUL. Si se sobrescriben los métodos de backup/restore, siempre deben incluir una llamada al método del padre, ejemplo:

Bloque de código
languagejava
themeEclipse
@Override
protected void backupProperties( Map<String, Object> identityProperties ) {
	super.backupProperties( identityProperties );

	// salvar propiedades especificas de mi aplicacion
    identityProperties.put( "miPropiedad", miPropiedad );
	...
}


@Override
protected void restoreProperties( Map<String, Object> identityProperties ) {
	super.restoreProperties( identityProperties );

	// restaurar propiedades especificas de mi aplicacion
    miPropiedad = identityProperties.get( "miPropiedad" );
	...
}