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