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


Otro elemento a tener en cuenta en la impersonació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:

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:

@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" );
	...
}