NHibernate和SetSessionAuth审计列

时间:2010-04-13 21:42:01

标签: nhibernate fluent-nhibernate auditing

我们有触发器设置的审核列。 出于模糊的安全原因,在我的任期之前和我的控制之前,我们使用通用用户登录,并执行“设置会话授权”以将用户更改为登录用户的db用户。

当我们转换为NHibernate时,它会创建一个全新的会话并将所有内容都填满 当我们尝试设置会话身份验证时,我们将set session auth关闭...

现在我们正试图找到一种方法让NHibernate让我们“设置会话授权”而无需回收我们的会话,因此我们可以使用我们现有的基于触发器的审计列,包括旧版应用程序和新版本NHibernate应用程序。

这不是理想的解决方案,也不是最好的解决方法,但它有可能吗?

我希望有一个允许这种访问的备用接口。

有没有人知道该怎么做,或者你能指出我的方向和良好的提示吗?

谢谢,

埃里克 -

1 个答案:

答案 0 :(得分:1)

您可以继承DriverConnectionProvider并在创建连接时执行任何操作。

示例:

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;
    }
}

然后配置NHiberate以将其用作连接提供程序。

(GetUser是您提供正确用户的方法)