我正在尝试使用SecurEntity为我的应用程序中的某些表实现列加密。
我正在使用依赖注入将 DbContext 的单个实例注入到我的所有存储库中。
DbContext 类有一个附加到 SaveChanges 事件处理程序的事件,如果正在保存的更改保存在应加密的对象上,则该事件处理程序调用 SecurEntity Encrpyt 方法。
还有一个附加到 ObjectMaterialized 事件处理程序的事件,该事件处理程序在最初从数据库中检索加密对象时解密它们。
当我在登录期间调试应用程序时,用户对象(这是应该加密的表之一),用户对象从数据库中检索并成功解密。然后它具有一些属性,例如更新的上次登录日期,这些更改被保存,然后成功加密。
我的问题是,稍后在登录过程中,再次检索了 User 对象,但它没有触发 ObjectMaterialized 事件,因此它没有被解密。
我认为这是因为由于依赖注入而使用了单个 DbContext,并且实体框架已经有一个正在跟踪的实例。
有谁知道我该如何解决这个问题?我正在开发一个将托管在 Azure 上的应用程序,因此透明数据加密不是我的选择,我需要实现某种形式的加密。