2010-04-13 2 views
0

Nous avons des colonnes d'audit définies par des déclencheurs. Pour des raisons de sécurité obscures antérieures mon mandat et hors de mon contrôle, nous enregistrons avec un utilisateur générique et faire une « autorisation de la session set » pour changer l'utilisateur à l'utilisateur db de l'utilisateur qui est connecté.Colonnes d'audit NHibernate et SetSessionAuth

Lorsque nous sommes convertis en NHibernate, cela crée une toute nouvelle session et tout remonte à lorsque nous essayons de faire une session d'authentification, donc nous avons désactivé l'authentification de la session ...

Maintenant, nous essayons de trouver un façon de permettre à NHibernate de nous permettre de «définir l'autorisation de session» sans recycler la session, afin que nous puissions utiliser notre colonne d'audit basée sur des déclencheurs existante avec les applications héritées et nos nouvelles applications NHibernate.

Ce n'est pas une solution idéale, ou la meilleure façon de le faire même, mais est-ce possible?

J'espérais qu'il existait une autre interface permettant ce type d'accès.

Est-ce que quelqu'un sait comment le faire, ou pouvez-vous me diriger vers et de bons indices?

Merci,

Eric-

Répondre

1

Vous pouvez hériter DriverConnectionProvider et faire tout ce dont vous avez besoin lors de la création d'une connexion.

Exemple:

public class MyConnectionProvider : DriverConnectionProvider 
{ 
    public override IDbConnection GetConnection() 
    { 
     var connection = base.GetConnection(); 
     var sessionAuthCommand = connection.CreateCommand(); 
     sessionAuthCommand.CommandText = "set session authorization " + GetUser(); 
     sessionAuthCommand.ExecuteNonQuery(); 
     return connection; 
    } 
} 

Et puis configurez NHiberate pour l'utiliser comme fournisseur de connexion.

(GetUser est la méthode où vous allez fournir l'utilisateur correct)

+0

Cela a fonctionné! Nous étions si proches, nous avions exactement le même code, mais nous avons reçu la commande du pilote au lieu de la connexion. Mais votre chemin a fonctionné et le nôtre n'a pas Merci! E- –

Questions connexes