2016-02-19 1 views
3

Nous utilisons la bibliothèque rapide OrmLite (ServiceStack) & comme microORM pour se connecter à notre base de données PostgreSQL.ServiceStack OrmLite - pré et post exécution

Le chiffrement TDE est activé dans notre base de données PostgreSQL. Pour vous assurer que les données pertinentes sont décryptées avant requête, nous devons exécuter les éléments suivants:

Db.ExecuteSql(string.Format("SELECT pgtde_begin_session('{0}');", tdeKey)); 

et à la fin:

Db.ExecuteSql("SELECT pgtde_end_session();"); 

Au lieu d'insérer ces derniers dans chacune de nos méthodes de RequestDto, peut nous nous assurons plutôt que ces instructions sql sont exécutées avant et après chaque appel.

Répondre

2

Vous pouvez essayer d'utiliser un OrmLite Exec Filter, avec quelque chose comme:

public class PgSqlSecureSessionFilter : OrmLiteExecFilter 
{ 
    public override T Exec<T>(IDbConnection db, Func<IDbCommand, T> filter) 
    { 
     try 
     { 
      db.Execute("SELECT pgtde_begin_session(@tdeKey)", new { tdeKey }); 
      return base.Exec(db, filter); 
     } 
     finally { 
      db.Execute("SELECT pgtde_end_session();"); 
     } 
    } 
} 

OrmLiteConfig.ExecFilter = new PgSqlSecureSessionFilter(); 
+0

merci. Par intérêt, où suggéreriez-vous d'ajouter le code ci-dessus. Dans le projet principal ou l'interface de service? –

+1

@MarkH C'est juste une propriété statique qui doit être initialisée sur StartUp, c'est-à-dire avec 'OrmLiteConnectionFactory'. – mythz

+0

nous avons remarqué que le db.ExecuteSql provoque l'appel du filtre exec (récursivité). –